{
 "cells": [
  {
   "cell_type": "markdown",
   "source": [
    "# LangChain表达式 (LCEL)\n",
    "LangChain表达式语言，或者LCEL，是一种声明式的方式，可以轻松地将链条组合在一起。 LCEL从第一天开始就被设计为支持将原型放入生产中，不需要改变任何代码，从最简单的“提示+LLM”链到最复杂的链(我们已经看到人们成功地在生产中运行了包含数百步的LCEL链)。以下是你可能想要使用LCEL的一些原因：\n",
    "\n",
    "**流式支持** 当你用LCEL构建你的链时，你可以得到最佳的首次到令牌的时间(输出的第一块内容出来之前的时间)。对于一些链，这意味着例如我们直接从LLM流式传输令牌到一个流式输出解析器，你可以以与LLM提供者输出原始令牌相同的速率得到解析后的、增量的输出块。\n",
    "\n",
    "**异步支持** 任何用LCEL构建的链都可以通过同步API(例如在你的Jupyter笔记本中进行原型设计时)以及异步API(例如在LangServe服务器中)进行调用。这使得可以使用相同的代码进行原型设计和生产，具有很好的性能，并且能够在同一台服务器中处理许多并发请求。\n",
    "\n",
    "**优化的并行执行** 无论何时，你的LCEL链有可以并行执行的步骤(例如，如果你从多个检索器中获取文档)，我们都会自动执行，无论是在同步接口还是异步接口中，以获得最小可能的延迟。\n",
    "\n",
    "**重试和回退** 为你的LCEL链的任何部分配置重试和回退。这是一种使你的链在大规模下更可靠的好方法。我们目前正在努力为重试/回退添加流式支持，这样你就可以在没有任何延迟成本的情况下获得增加的可靠性。\n",
    "\n",
    "**访问中间结果** 对于更复杂的链，通常在最终输出产生之前就能访问中间步骤的结果是非常有用的。这可以用来让最终用户知道正在发生什么，甚至只是用来调试你的链。你可以流式传输中间结果，它在每个LangServe服务器上都可用。\n",
    "\n",
    "**输入和输出模式** 输入和输出模式为每个LCEL链提供了从你的链的结构中推断出来的Pydantic和JSONSchema模式。这可以用于验证输入和输出，是LangServe的一个重要部分。\n",
    "\n",
    "**无缝的LangSmith跟踪集成** 随着你的链变得越来越复杂，理解在每一步究竟发生了什么变得越来越重要。 使用LCEL，所有步骤都会自动记录到LangSmith，以实现最大的可观察性和可调试性。\n",
    "\n",
    "无缝的LangServe部署集成 任何用LCEL创建的链都可以使用LangServe轻松部署。"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "fc4b93c9a9611675"
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 基本示例：提示 + 模型 + 输出解析器\n",
    "最基本和常见的用例是将提示模板和模型链接在一起。为了了解这是如何工作的，让我们创建一个链条，它接受一个主题并生成一个笑话：` %pip install --upgrade --quiet langchain-core langchain-community langchain-openai` \n",
    "整个流程，按照以下步骤进行操作：\n",
    "1. 我们将用户输入的主题作为 {\"topic\": \"ice cream\"} 传入。\n",
    "2. prompt 组件接受用户输入，然后使用主题构建提示，生成 PromptValue。\n",
    "3. model 组件接受生成的提示，并将其传递给 OpenAI LLM 模型进行评估。模型生成的输出是一个 ChatMessage 对象。\n",
    "4. 最后，output_parser 组件接受一个 ChatMessage，将其转换为 Python 字符串，并从 invoke 方法返回。\n",
    "\n",
    "```\n",
    "graph LR\n",
    "    A(输入：topic=猫) --> |字典| B(PromptTemplate)\n",
    "    B -->|PromptValue| C(ChatModel)    \n",
    "    C -->|ChatMessage| D(StrOutputParser)\n",
    "    D --> |字符串| F(结果)\n",
    "```\n",
    "> 请注意，如果您对任何组件的输出感到好奇，您可以始终测试链条的较小版本，例如 prompt 或 prompt | model，以查看中间结果：\n",
    "```python\n",
    "input = {\"topic\": \"ice cream\"}\n",
    "\n",
    "prompt.invoke(input)\n",
    "# > ChatPromptValue(messages=[HumanMessage(content='tell me a short joke about ice cream')])\n",
    "\n",
    "(prompt | model).invoke(input)\n",
    "# > AIMessage(content=\"为什么冰淇淋去看心理医生？\\n因为它有太多的配料，找不到自己的冰淇淋锥自信！\")\n",
    "```"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "430f9c315dd9f704"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "为什么猫喜欢上网？因为它们喜欢追“鼠标”。\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "from dotenv import load_dotenv\n",
    "from langchain_core.output_parsers import StrOutputParser\n",
    "from langchain_core.prompts import ChatPromptTemplate\n",
    "from langchain_openai import ChatOpenAI\n",
    "\n",
    "# 加载环境变量\n",
    "load_dotenv()\n",
    "# print(ChatOpenAI.__doc__)\\\n",
    "# 创建 ChatOpenAI 对象 不要引入langchain-community，ChatOpenAI使用langchain-openai\n",
    "try:\n",
    "    llm = ChatOpenAI(\n",
    "        # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key=\"sk-xxx\",\n",
    "        openai_api_key=os.getenv(\"DASHSCOPE_API_KEY\"),\n",
    "        openai_api_base=\"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n",
    "        model_name=\"qwen-max\"\n",
    "    )\n",
    "\n",
    "    prompt_template = \"\"\"\n",
    "    请生成一个笑话，关于{topic}。\n",
    "    \"\"\"\n",
    "    # 创建一个提示模板\n",
    "    prompt = ChatPromptTemplate.from_template(prompt_template)\n",
    "    # 请注意这行代码，我们使用LCEL将不同的组件组合成一个单一的链条：\n",
    "    chain = prompt | llm | StrOutputParser()\n",
    "    print(chain.invoke({\"topic\": \"猫\"}))\n",
    "except Exception as e:\n",
    "    print(e)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-10-25T02:19:29.342013Z",
     "start_time": "2024-10-25T02:19:28.208093Z"
    }
   },
   "id": "901d55ffb394428a",
   "execution_count": 2
  },
  {
   "cell_type": "markdown",
   "source": [
    "`chain = prompt | llm | StrOutputParser()` 请注意这行代码，我们使用LCEL将不同的组件组合成一个单一的链条\n",
    "`|` 符号类似于 unix 管道操作符，它将不同的组件链接在一起，将一个组件的输出作为下一个组件的输入。"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "da14c82ab4561c6b"
  },
  {
   "cell_type": "markdown",
   "source": [
    "## RAG搜索实例\n",
    "对于下一个示例，我们想要运行一个检索增强生成链条，在回答问题时添加一些上下文。"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "92af16a926b738fa"
  },
  {
   "cell_type": "markdown",
   "source": [],
   "metadata": {
    "collapsed": false
   },
   "id": "a6931e3d34ddbf"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "steps__={'content': VectorStoreRetriever(tags=['DocArrayInMemorySearch'], vectorstore=<langchain_community.vectorstores.docarray.in_memory.DocArrayInMemorySearch object at 0x1132ed8e0>, search_kwargs={}), 'question': RunnablePassthrough()}\n",
      "\"Input to ChatPromptTemplate is missing variables {'context'}.  Expected: ['context', 'question'] Received: ['content', 'question']\\nNote: if you intended {context} to be part of the string and not a variable, please escape it with double curly braces like: '{{context}}'.\\nFor troubleshooting, visit: https://python.langchain.com/docs/troubleshooting/errors/INVALID_PROMPT_INPUT\"\n"
     ]
    }
   ],
   "source": [
    "from langchain_core.output_parsers import StrOutputParser\n",
    "from langchain_core.prompts import ChatPromptTemplate\n",
    "from langchain_core.runnables import RunnableParallel, RunnablePassthrough\n",
    "from langchain_community.vectorstores import DocArrayInMemorySearch\n",
    "from langchain_community.embeddings.dashscope import DashScopeEmbeddings\n",
    "from langchain_openai import ChatOpenAI\n",
    "import os\n",
    "from dotenv import load_dotenv\n",
    "\n",
    "try:\n",
    "    load_dotenv()\n",
    "    vectorstore = DocArrayInMemorySearch.from_texts(\n",
    "        [\"harrison worked at kensho\", \"bears like to eat honey\"],\n",
    "        embedding=DashScopeEmbeddings(dashscope_api_key=os.getenv(\"DASHSCOPE_API_KEY\"))\n",
    "    )\n",
    "    retriever = vectorstore.as_retriever()\n",
    "    \n",
    "    template = \"\"\"\n",
    "        Answer the question based only on the following context:\n",
    "    {context}\n",
    "\n",
    "    Question: {question}\n",
    "    \"\"\"\n",
    "    prompt = ChatPromptTemplate.from_template(template)\n",
    "    llm = ChatOpenAI(\n",
    "        # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key=\"sk-xxx\",\n",
    "        openai_api_key=os.getenv(\"DASHSCOPE_API_KEY\"),\n",
    "        openai_api_base=\"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n",
    "        model_name=\"qwen-max\"\n",
    "    )\n",
    "    output_parser = StrOutputParser()\n",
    "    # 创建一个检索增强生成链条\n",
    "    setup_and_retrieval = RunnableParallel(\n",
    "        {\"content\": retriever, \"question\": RunnablePassthrough()}\n",
    "    )\n",
    "    print(setup_and_retrieval)\n",
    "    chain = setup_and_retrieval | prompt | llm | output_parser\n",
    "    chain.invoke(\"where did harrison work?\")\n",
    "except Exception as e:\n",
    "    print(e)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-10-25T03:10:59.425247Z",
     "start_time": "2024-10-25T03:10:58.808777Z"
    }
   },
   "id": "ea25881a9531aa2a",
   "execution_count": 14
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 文件加载\n",
    "### markdown\n",
    "使用loader 来加载markdown文件\n",
    "文件样例\n",
    "```markdown\n",
    "# 我是一个markdown加载示例\n",
    "- 第一项目\n",
    "- 第二个项目\n",
    "- 第三个项目\n",
    " \n",
    "## 第一个项目\n",
    "AI研习社最厉害专业的AI研究基地\n",
    " \n",
    "## 第二个项目\n",
    "AIGC打造未来AI应用天地\n",
    " \n",
    "## 第三个项目\n",
    "AI研习社是一个非常牛逼的AI媒体\n",
    "```\n"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "4d3457f35652296b"
  },
  {
   "cell_type": "code",
   "outputs": [],
   "source": [
    "from langchain.document_loaders import TextLoader\n",
    "\n",
    "loader = TextLoader(\"loader.md\")\n",
    "loader.load()"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "31d55792d2074352",
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 文档转换\n",
    "原理:\n",
    "\n",
    "将文档分成小的、有意义的块(句子).\n",
    "将小的块组合成为一个更大的块，直到达到一定的大小.\n",
    "一旦达到一定的大小，接着开始创建与下一个块重叠的部分.\n",
    "### 文档切割\n",
    "RecursiveCharacterTextSplitter 是一个用于将文本分割成较小块的工具，常用于处理长文本，以便于后续的自然语言处理任务，如文本摘要、情感分析等\n",
    "主要参数\n",
    "- chunk_size: 每个文本块的最大长度。\n",
    "- chunk_overlap: 相邻文本块之间的重叠长度。\n",
    "- separators: 用于尝试分割文本的字符列表，通常包括空格、标点符号等。\n",
    "- length_function: 用于计算文本长度的函数，默认为 len 函数。"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "61a9b68d4cbf8ec4"
  },
  {
   "cell_type": "code",
   "outputs": [],
   "source": [
    "from langchain.text_splitter import RecursiveCharacterTextSplitter\n",
    "\n",
    "# 加载要切割的文档\n",
    "with open(\"test.txt\") as f:\n",
    "    src_txt = f.read()\n",
    "\n",
    "# 创建文本切割器\n",
    "text_splitter = RecursiveCharacterTextSplitter(\n",
    "    #切分的文本块大小，一般通过长度函数计算\n",
    "    chunk_size=20,\n",
    "    #切分的文本块重叠大小，一般通过长度函数计算\n",
    "    chunk_overlap=5,\n",
    "    #长度函数,也可以传递tokenize函数\n",
    "    length_function=len,\n",
    "    #是否添加起始索引\n",
    "    add_start_index=True,\n",
    ")\n",
    "\n",
    "text = text_splitter.create_documents([src_txt])\n",
    "print(f'{text[0]}\\n{text[1]}')"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "4c0fb2710ad7ab44",
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "source": [
    "### 字符串切割\n",
    "CharacterTextSplitter"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "31d48ef851b0fda"
  },
  {
   "cell_type": "code",
   "outputs": [],
   "source": [
    "from langchain.text_splitter import CharacterTextSplitter\n",
    "\n",
    "with open(\"test.txt\") as f:\n",
    "    src_txt = f.read()\n",
    "\n",
    "text_splitter = CharacterTextSplitter(\n",
    "    chunk_size=50,\n",
    "    # 相邻文本块之间的重叠长度。设置适当的重叠可以确保上下文的连续性，避免重要信息被分割到不同的块中\n",
    "    chunk_overlap=5,\n",
    "    #切割的标志字符，默认是\\n\\n\n",
    "    separator=\"。\",\n",
    "    length_function=len,\n",
    "    #是否添加起始索引\n",
    "    add_start_index=True,\n",
    "    is_separator_regex=False  #是否是正则表达式\n",
    ")\n",
    "\n",
    "text = text_splitter.create_documents([src_txt])\n",
    "print(f'{text[0]}\\n{text[1]}')"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "35bf2726239392ee",
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "source": [
    "### 代码文档切割\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "51a473547e7b522"
  },
  {
   "cell_type": "code",
   "outputs": [],
   "source": [
    "from langchain.text_splitter import RecursiveCharacterTextSplitter, Language\n",
    "\n",
    "# 支持的语言列表\n",
    "#[e.value for e in Language]\n",
    "\n",
    "PYTHON_CODE = \"\"\"\n",
    "def func2():\n",
    " print(\"hello\")\n",
    " \n",
    "#调用函数\n",
    "hello_world()\n",
    "\"\"\"\n",
    "py_splitter = RecursiveCharacterTextSplitter.from_language(\n",
    "    language=Language.PYTHON,\n",
    "    chunk_size=50,\n",
    "    chunk_overlap=10\n",
    ")\n",
    "\n",
    "python_docs = py_splitter.create_documents([PYTHON_CODE])\n",
    "print(python_docs)\n"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "f0aaba51ba6a3976",
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "source": [
    "### 按token切割文档\n"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "22907480c2fc4619"
  },
  {
   "cell_type": "code",
   "outputs": [],
   "source": [
    "from langchain.text_splitter import CharacterTextSplitter\n",
    "\n",
    "with open(\"test.txt\") as f:\n",
    "    src_txt = f.read()\n",
    "\n",
    "text_splitter = CharacterTextSplitter.from_tiktoken_encoder(\n",
    "    chunk_size=50,\n",
    "    chunk_overlap=5\n",
    ")\n",
    "\n",
    "text = text_splitter.create_documents([src_txt])\n",
    "print(text[0])"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "f30b08a328f3b4f8",
   "execution_count": null
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 文本向量化实现方式\n",
    "### 文本向量化\n",
    "从文件中获取文本信息，并向量化存储到本地，使用Embedding进行嵌入，精确检索信息"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "b58bbd55b95f063f"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'query': '请给我讲讲你的工作经历', 'result': '您的问题与所提供的背景信息无关，且要求我分享个人的工作经历。作为一个AI，我没有实际的工作经历可以分享。如果您有关于手机的问题，我会很乐意帮您解答。如果需要关于工作经历的模拟回答或撰写帮助，也请告诉我具体的要求，我将尽力提供帮助。不过，对于您现在的问题，我的回答只能是：**不知道**。'}\n"
     ]
    }
   ],
   "source": [
    "from langchain.chains.retrieval_qa.base import RetrievalQA\n",
    "from langchain_community.llms.tongyi import Tongyi\n",
    "from langchain_core.prompts import PromptTemplate\n",
    "from langchain_community.embeddings.dashscope import DashScopeEmbeddings\n",
    "from langchain_community.vectorstores.faiss import FAISS\n",
    "import os\n",
    "\n",
    "'''\n",
    " 从文件中获取文本信息，并向量化存储到本地，使用Embedding进行嵌入，精确检索信息\n",
    "'''\n",
    "\n",
    "with open(\"test.txt\") as f:\n",
    "    content = f.read()\n",
    "\n",
    "text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)\n",
    "docs = text_splitter.create_documents([content])\n",
    "\n",
    "# embeddings = OpenAIEmbeddings() \n",
    "embeddings = DashScopeEmbeddings(\n",
    "    # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key=\"sk-xxx\",\n",
    "    dashscope_api_key=os.getenv(\"DASHSCOPE_API_KEY\"),\n",
    "    # openai_api_base=\"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n",
    "    model=\"text-embedding-v1\"\n",
    ")\n",
    "\n",
    "# 创建向量库\n",
    "vector_stores = FAISS.from_documents(docs, embeddings)\n",
    "# 创建检索器.默认情况下，向量存储检索器使用相似性搜索\n",
    "retriever = vector_stores.as_retriever(\n",
    "    # 相似性分数阈值检索\n",
    "    #    search_type=\"similarity_score_threshold\", search_kwargs={\"score_threshold\": 0.5}\n",
    ")\n",
    "\n",
    "template = \"\"\"\n",
    "请使用下面提供的背景信息来回答最后的问题。 如果背景信息中没有答案，请直接说不知道，不要试图凭空编造答案。\n",
    "回答时尽量完整。\n",
    "{context}\n",
    "问题: {question}\n",
    "有用的回答:\n",
    "\"\"\"\n",
    "prompt = PromptTemplate(\n",
    "    template=template, input_variables=[\"context\", \"question\"]\n",
    ")\n",
    "\n",
    "llm = Tongyi()\n",
    "\n",
    "qa_chain = RetrievalQA.from_chain_type(\n",
    "    llm=llm,\n",
    "    retriever=retriever,\n",
    "    chain_type_kwargs={\"prompt\": prompt}\n",
    ")\n",
    "\n",
    "result = qa_chain.invoke({\"query\": \"请给我讲讲你的工作经历\"})\n",
    "print(result)\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-10-24T08:46:24.630078Z",
     "start_time": "2024-10-24T08:46:20.523035Z"
    }
   },
   "id": "79bd6c9923f9f10a",
   "execution_count": 17
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "data": {
      "text/plain": "[[0.1840006560087204,\n  -2.2058918476104736,\n  0.8087158203125,\n  1.6663411855697632,\n  -0.205078125,\n  0.238037109375,\n  1.771728515625,\n  -2.3544921875,\n  -0.9535319209098816,\n  0.1965738981962204,\n  -2.0323894023895264,\n  4.114583492279053,\n  1.8582357168197632,\n  -0.2360432893037796,\n  0.9698893427848816,\n  -0.3335774838924408,\n  -2.2390544414520264,\n  1.1336263418197632,\n  -0.33404541015625,\n  1.4930013418197632,\n  -2.2130534648895264,\n  -1.4329427480697632,\n  0.466552734375,\n  -1.6140950918197632,\n  2.06182861328125,\n  -1.2907510995864868,\n  0.20135498046875,\n  0.5924479365348816,\n  -1.1612142324447632,\n  0.50146484375,\n  -1.5662435293197632,\n  -4.181600093841553,\n  -1.138916015625,\n  -0.9991862177848816,\n  1.973876953125,\n  -0.8815714716911316,\n  0.6304524540901184,\n  1.1840921640396118,\n  -0.7856852412223816,\n  0.0052897133864462376,\n  2.0441081523895264,\n  0.1793619841337204,\n  -0.2397053986787796,\n  -2.1416828632354736,\n  2.0796711444854736,\n  0.27777099609375,\n  2.3953857421875,\n  0.4836018979549408,\n  -0.8564453125,\n  -2.9569294452667236,\n  1.4077657461166382,\n  -2.783203125,\n  -0.869873046875,\n  -0.49249267578125,\n  -1.47119140625,\n  -0.9072265625,\n  -1.5020345449447632,\n  -1.9118753671646118,\n  -0.09716796875,\n  -0.9058430790901184,\n  -0.1810709685087204,\n  1.6017252206802368,\n  0.9825439453125,\n  0.32080078125,\n  0.4037272036075592,\n  0.7150065302848816,\n  0.93017578125,\n  0.2315673828125,\n  -0.94287109375,\n  -0.9588215947151184,\n  0.5560505986213684,\n  -2.0087077617645264,\n  0.0393880195915699,\n  -1.3238525390625,\n  2.2621662616729736,\n  0.5462239384651184,\n  2.5668132305145264,\n  -2.417236328125,\n  1.4694010019302368,\n  -0.926025390625,\n  1.3083292245864868,\n  1.4329427480697632,\n  -0.427001953125,\n  1.5716146230697632,\n  2.61083984375,\n  1.3063150644302368,\n  -1.2263997793197632,\n  0.0560302734375,\n  0.05810546875,\n  2.8880207538604736,\n  -2.2197265625,\n  -5.327392578125,\n  -1.6472982168197632,\n  3.5528972148895264,\n  2.9918620586395264,\n  0.7573649287223816,\n  -0.8243001103401184,\n  -0.6055501103401184,\n  0.5670903325080872,\n  -2.02685546875,\n  -1.0199381113052368,\n  0.3319498598575592,\n  -2.032958984375,\n  -2.7996418476104736,\n  0.4036051332950592,\n  1.0418294668197632,\n  -1.2940267324447632,\n  0.1454874724149704,\n  1.2423502206802368,\n  -1.85400390625,\n  0.7598469853401184,\n  0.818115234375,\n  -1.1993001699447632,\n  0.8504841923713684,\n  6.109049320220947,\n  -2.6827800273895264,\n  2.6454265117645264,\n  1.3818359375,\n  1.0976155996322632,\n  2.41064453125,\n  0.1539713591337204,\n  -0.8933308720588684,\n  1.279296875,\n  0.0553385429084301,\n  -1.9731649160385132,\n  0.6223958134651184,\n  -2.322086811065674,\n  -2.68896484375,\n  -0.7154948115348816,\n  2.7190754413604736,\n  1.9657388925552368,\n  0.5417887568473816,\n  -1.8898111581802368,\n  0.35992431640625,\n  0.5172526240348816,\n  1.0884805917739868,\n  1.5393880605697632,\n  -2.8494873046875,\n  1.617919921875,\n  3.93701171875,\n  0.0660807266831398,\n  -1.8114420175552368,\n  1.690185546875,\n  -0.6874186396598816,\n  0.5460408329963684,\n  0.131591796875,\n  0.5899251103401184,\n  1.0413411855697632,\n  0.4924112856388092,\n  -1.542724609375,\n  -1.9943033456802368,\n  -2.0126953125,\n  -1.9501953125,\n  -0.8107096552848816,\n  2.0562336444854736,\n  3.4820148944854736,\n  0.707763671875,\n  3.505859375,\n  -0.3139851987361908,\n  2.6518352031707764,\n  -1.6310220956802368,\n  0.583984375,\n  2.9276020526885986,\n  -0.3401692807674408,\n  -1.2932943105697632,\n  -0.6876449584960938,\n  1.877685546875,\n  -0.69622802734375,\n  -1.7093099355697632,\n  -2.784332275390625,\n  2.0389404296875,\n  -1.3808695077896118,\n  -0.5489909052848816,\n  -2.05322265625,\n  -0.130859375,\n  -2.5221354961395264,\n  -2.6236979961395264,\n  -3.0214030742645264,\n  0.3533731997013092,\n  -1.420654296875,\n  1.3444010019302368,\n  0.05743408203125,\n  -0.54931640625,\n  -2.0226237773895264,\n  4.09375,\n  1.70361328125,\n  -0.2760823667049408,\n  -0.4905191957950592,\n  0.2025553435087204,\n  -0.1959635466337204,\n  2.9865314960479736,\n  -3.6487629413604736,\n  0.2264404296875,\n  2.8365886211395264,\n  0.8185221552848816,\n  -1.776963233947754,\n  0.4877115786075592,\n  1.1773275136947632,\n  3.2024738788604736,\n  -1.0140787363052368,\n  -2.1046550273895264,\n  0.733612060546875,\n  0.6731770634651184,\n  -0.8645121455192566,\n  0.9143880009651184,\n  -3.986328125,\n  -1.8658040761947632,\n  -2.978515625,\n  -1.2782999277114868,\n  0.5831705927848816,\n  0.4531148374080658,\n  -1.6815185546875,\n  -2.13623046875,\n  1.2604573965072632,\n  -1.2001138925552368,\n  -4.61865234375,\n  0.1483561247587204,\n  0.5555419921875,\n  1.45654296875,\n  1.6023763418197632,\n  0.4364420473575592,\n  -0.83837890625,\n  0.1620279997587204,\n  0.6934814453125,\n  1.9075521230697632,\n  2.0667316913604736,\n  0.19940185546875,\n  -2.0174152851104736,\n  0.7981770634651184,\n  -3.1561279296875,\n  -0.8582865595817566,\n  1.2500814199447632,\n  -0.5660400390625,\n  -0.187744140625,\n  -1.1486002206802368,\n  -0.90631103515625,\n  -0.9588215947151184,\n  1.1536458730697632,\n  0.3748372495174408,\n  -0.46856689453125,\n  -1.025146484375,\n  -0.2154134064912796,\n  2.3791911602020264,\n  -1.1053975820541382,\n  0.13916015625,\n  -1.359375,\n  1.5794271230697632,\n  1.69793701171875,\n  -0.4791666567325592,\n  -2.4654948711395264,\n  0.5773518681526184,\n  0.274658203125,\n  -0.0900065079331398,\n  -0.105712890625,\n  -1.0623779296875,\n  0.08868408203125,\n  -0.2293294221162796,\n  0.763427734375,\n  -1.4360758066177368,\n  2.6622722148895264,\n  0.3600260317325592,\n  1.0426431894302368,\n  -1.4140625,\n  -2.8619792461395264,\n  0.3505859375,\n  -1.0615640878677368,\n  0.9737752079963684,\n  0.8856608271598816,\n  1.1354166269302368,\n  0.12908935546875,\n  -0.1105143204331398,\n  -0.2953287661075592,\n  -0.7730916142463684,\n  -2.9080402851104736,\n  -1.8887532949447632,\n  0.61279296875,\n  0.1490885466337204,\n  1.4347330331802368,\n  2.0706379413604736,\n  0.2265625,\n  -2.2858073711395264,\n  0.715576171875,\n  0.02121988870203495,\n  -1.3535054922103882,\n  0.496246337890625,\n  -0.0079345703125,\n  1.5399576425552368,\n  -1.7590738534927368,\n  -0.1458536833524704,\n  -0.2074381560087204,\n  -2.9551594257354736,\n  -0.70166015625,\n  0.5423024296760559,\n  -0.4054361879825592,\n  2.3538410663604736,\n  2.585906982421875,\n  1.8660482168197632,\n  -0.6598307490348816,\n  4.009439945220947,\n  2.3210856914520264,\n  0.1702067106962204,\n  0.9611002802848816,\n  1.0957742929458618,\n  1.1492513418197632,\n  -0.5123698115348816,\n  1.3986002206802368,\n  -0.9717610478401184,\n  2.1473388671875,\n  -2.85498046875,\n  -0.3292439877986908,\n  0.4788411557674408,\n  -0.1998697966337204,\n  0.559326171875,\n  -2.4539387226104736,\n  -0.6796467900276184,\n  -0.9898630976676941,\n  -0.9787093997001648,\n  -5.57421875,\n  1.3294271230697632,\n  3.0521647930145264,\n  -0.40301260352134705,\n  1.4156900644302368,\n  0.0651041641831398,\n  -0.6354166865348816,\n  1.28857421875,\n  -0.4508056640625,\n  0.9864501953125,\n  -0.994873046875,\n  1.7548421621322632,\n  0.909423828125,\n  -2.6402995586395264,\n  -0.3259684145450592,\n  0.8691994547843933,\n  0.6236165165901184,\n  5.210855960845947,\n  -1.1039224863052368,\n  0.75048828125,\n  1.7930094003677368,\n  -0.7096354365348816,\n  0.3741861879825592,\n  -1.104736328125,\n  3.8770344257354736,\n  -1.5465494394302368,\n  -1.58544921875,\n  -1.2769979238510132,\n  1.0654296875,\n  -5.668619632720947,\n  1.3080850839614868,\n  -0.7280680537223816,\n  4.679483890533447,\n  0.6656087040901184,\n  4.61279296875,\n  -0.1845703125,\n  1.42169189453125,\n  0.2356770783662796,\n  -0.1068929061293602,\n  1.0062408447265625,\n  0.6546986699104309,\n  1.0314534902572632,\n  -0.45465087890625,\n  0.0708516463637352,\n  0.262451171875,\n  4.027669429779053,\n  0.5792236328125,\n  -0.6646525263786316,\n  1.5365396738052368,\n  0.02679443359375,\n  0.8628336787223816,\n  -0.648651123046875,\n  -0.5083211064338684,\n  -4.482096195220947,\n  -3.1912434101104736,\n  -0.5739338994026184,\n  -0.8012288212776184,\n  1.70751953125,\n  -0.0701955184340477,\n  -1.7677408456802368,\n  1.37548828125,\n  0.5823567509651184,\n  1.0149739980697632,\n  1.6356607675552368,\n  -1.0779317617416382,\n  0.0314127616584301,\n  -1.142578125,\n  0.6653645634651184,\n  0.4314778745174408,\n  0.09152984619140625,\n  1.03125,\n  1.4199625253677368,\n  -0.8839518427848816,\n  -1.7874349355697632,\n  1.0467935800552368,\n  -1.373046875,\n  1.484375,\n  -0.3398030698299408,\n  2.1612141132354736,\n  -0.6656748652458191,\n  -2.0126953125,\n  2.2732341289520264,\n  -0.8055012822151184,\n  1.5343424081802368,\n  -2.69970703125,\n  -0.96728515625,\n  -1.0382486581802368,\n  -1.7342733144760132,\n  0.1783854216337204,\n  0.7185872197151184,\n  -0.8403727412223816,\n  -0.6429036259651184,\n  2.6427409648895264,\n  -0.5301106572151184,\n  -1.3594564199447632,\n  -1.2267252206802368,\n  -1.2422689199447632,\n  0.5441080927848816,\n  0.8590494990348816,\n  2.014678955078125,\n  -2.1642253398895264,\n  0.6369425654411316,\n  1.24169921875,\n  0.728271484375,\n  0.01123046875,\n  1.39849853515625,\n  2.2266438007354736,\n  -0.593505859375,\n  2.7058918476104736,\n  1.42138671875,\n  -0.5623372197151184,\n  -0.9820963740348816,\n  0.0661214217543602,\n  0.0736490860581398,\n  1.11181640625,\n  2.2979328632354736,\n  -0.3209071159362793,\n  -1.8253885507583618,\n  -1.25079345703125,\n  3.10498046875,\n  2.6274921894073486,\n  -2.4622395038604736,\n  2.0609538555145264,\n  -2.8002116680145264,\n  -0.17236328125,\n  -2.1805827617645264,\n  1.0015462636947632,\n  1.0009765625,\n  0.71923828125,\n  -2.1798503398895264,\n  -0.03031412698328495,\n  2.5939128398895264,\n  1.3442178964614868,\n  -2.6357421875,\n  0.9597676396369934,\n  0.291900634765625,\n  1.0753173828125,\n  -1.0165201425552368,\n  0.8582356572151184,\n  1.2895914316177368,\n  -2.8153076171875,\n  -2.87060546875,\n  0.1794484406709671,\n  0.3844095766544342,\n  1.0633544921875,\n  1.4256998300552368,\n  0.17919921875,\n  -1.5129801034927368,\n  -1.2954915761947632,\n  0.5767109990119934,\n  -0.81298828125,\n  -2.0478515625,\n  -0.1768595427274704,\n  1.1534017324447632,\n  1.0922037363052368,\n  1.067138671875,\n  2.0996501445770264,\n  -1.3865560293197632,\n  -0.8819376826286316,\n  -0.2258097380399704,\n  -0.6798502802848816,\n  -0.3821614682674408,\n  0.6841633915901184,\n  -2.056640625,\n  0.02433268167078495,\n  -1.3557943105697632,\n  0.19775390625,\n  -2.09112548828125,\n  3.3172607421875,\n  -0.265380859375,\n  -0.4287109375,\n  -0.6985676884651184,\n  1.0838216543197632,\n  2.3466796875,\n  -2.0927734375,\n  -0.6121419072151184,\n  -2.3459880352020264,\n  -1.8356119394302368,\n  -1.0083822011947632,\n  1.1531575918197632,\n  -0.9009602665901184,\n  -0.2717997133731842,\n  0.6106770634651184,\n  -3.40283203125,\n  -0.5511067509651184,\n  1.6541341543197632,\n  -1.1871744394302368,\n  0.3939615786075592,\n  0.1936848908662796,\n  0.9513346552848816,\n  0.19580078125,\n  -0.4254557192325592,\n  0.3805338442325592,\n  -0.2496490478515625,\n  -2.0923664569854736,\n  -0.8675130009651184,\n  1.9816080331802368,\n  0.9274088740348816,\n  -2.9804279804229736,\n  1.4739583730697632,\n  1.2848306894302368,\n  1.2352701425552368,\n  -2.227381467819214,\n  0.9134114384651184,\n  -0.0673014298081398,\n  2.3564453125,\n  -1.1700032949447632,\n  -0.7523600459098816,\n  -0.9418131709098816,\n  2.5279948711395264,\n  1.0900064706802368,\n  0.0017496744403615594,\n  0.3799642026424408,\n  -1.4777017831802368,\n  -0.1732584685087204,\n  -2.9285480976104736,\n  0.9262492060661316,\n  -1.1232095956802368,\n  -2.3604328632354736,\n  0.6041056513786316,\n  -2.7117919921875,\n  -0.3729654848575592,\n  0.3100382387638092,\n  -0.926025390625,\n  -1.201171875,\n  -0.0639444962143898,\n  -1.8846029043197632,\n  0.815673828125,\n  -0.6472981572151184,\n  -0.5616862177848816,\n  2.6666667461395264,\n  0.7279459834098816,\n  1.8125,\n  -0.20556640625,\n  1.151611328125,\n  2.3932292461395264,\n  1.0338541269302368,\n  3.1588542461395264,\n  2.0124919414520264,\n  -0.86029052734375,\n  1.393798828125,\n  -0.7085774540901184,\n  0.29217529296875,\n  -0.8614909052848816,\n  0.8050130009651184,\n  -2.3865559101104736,\n  0.364501953125,\n  0.9222819209098816,\n  -1.7654622793197632,\n  -0.1266276091337204,\n  1.5304361581802368,\n  0.7519124150276184,\n  2.005615234375,\n  -0.6620280146598816,\n  1.3873697519302368,\n  0.2744344174861908,\n  -0.6881510615348816,\n  1.7162271738052368,\n  -3.1731770038604736,\n  -1.75048828125,\n  -2.1690876483917236,\n  -1.2166748046875,\n  -1.2218424081802368,\n  1.0263162851333618,\n  -1.5299581289291382,\n  2.0901691913604736,\n  -1.0390625,\n  0.3285318911075592,\n  -0.58447265625,\n  -0.7023518681526184,\n  -1.0008951425552368,\n  0.8463541865348816,\n  0.0534718818962574,\n  0.8015238642692566,\n  -2.03125,\n  -1.755859375,\n  -0.0006736715440638363,\n  0.5983073115348816,\n  1.3426920175552368,\n  -0.823486328125,\n  1.2834066152572632,\n  -1.506591796875,\n  -0.28564453125,\n  -0.0579630546271801,\n  1.1797281503677368,\n  -1.1009521484375,\n  1.5315195322036743,\n  -0.5172526240348816,\n  1.8929849863052368,\n  -1.8873697519302368,\n  -0.6353759765625,\n  0.09586969763040543,\n  0.7578125,\n  0.6227620244026184,\n  0.6331380009651184,\n  1.3328043222427368,\n  -0.008015950210392475,\n  2.2890625,\n  -1.3280843496322632,\n  -2.107421875,\n  1.1785888671875,\n  -1.6360677480697632,\n  -1.8509114980697632,\n  0.5262044072151184,\n  -0.9632161259651184,\n  0.3971761167049408,\n  4.592610836029053,\n  -3.3839519023895264,\n  -1.4269205331802368,\n  -0.02457682229578495,\n  1.6565755605697632,\n  -1.4373372793197632,\n  3.6730144023895264,\n  -0.2928873598575592,\n  3.0546875,\n  -0.5550944209098816,\n  -9.944010734558105,\n  0.2130126953125,\n  -0.847900390625,\n  -0.25439453125,\n  -0.19482421875,\n  -3.3441162109375,\n  0.2125244140625,\n  0.680419921875,\n  -1.6657918691635132,\n  0.093505859375,\n  -0.0784505233168602,\n  1.969970703125,\n  -0.5794174671173096,\n  -0.19671630859375,\n  -0.401123046875,\n  -1.7197214365005493,\n  0.2808023989200592,\n  -1.857696533203125,\n  -4.008138179779053,\n  1.538330078125,\n  -2.54412841796875,\n  -0.07763671875,\n  -2.05615234375,\n  -0.4976297914981842,\n  1.403564453125,\n  0.6839192509651184,\n  -1.9110921621322632,\n  0.21337890625,\n  -1.984619140625,\n  -0.7067057490348816,\n  -0.78314208984375,\n  1.2202554941177368,\n  0.5609944462776184,\n  -0.2099405974149704,\n  1.0233968496322632,\n  -1.0916341543197632,\n  0.0891316756606102,\n  1.2623697519302368,\n  -1.1199544668197632,\n  1.5808919668197632,\n  0.20654296875,\n  -2.4371745586395264,\n  -0.1143798828125,\n  3.6383464336395264,\n  1.3932291269302368,\n  0.67236328125,\n  -2.031005859375,\n  -1.5673828125,\n  -0.704345703125,\n  1.25,\n  -0.6062749028205872,\n  -1.4556070566177368,\n  -0.023681640625,\n  1.8827718496322632,\n  1.1366373300552368,\n  0.7347819209098816,\n  -1.3380533456802368,\n  1.2659505605697632,\n  -3.075439453125,\n  -1.2259114980697632,\n  -2.1875,\n  0.1474609375,\n  -0.1536051481962204,\n  -1.7616729736328125,\n  1.072021484375,\n  -0.0530598945915699,\n  0.4112955629825592,\n  0.3199056088924408,\n  -0.7845866084098816,\n  3.5342204570770264,\n  -2.2003581523895264,\n  1.20703125,\n  0.3195139467716217,\n  1.1876627206802368,\n  -0.2595876157283783,\n  -1.0631510019302368,\n  -2.22900390625,\n  -0.5190137028694153,\n  1.2102457284927368,\n  -8.638346672058105,\n  1.7908529043197632,\n  0.71533203125,\n  0.9554850459098816,\n  -0.7938639521598816,\n  -0.1831258088350296,\n  0.5394694209098816,\n  1.4713541269302368,\n  -0.50830078125,\n  -1.0107218027114868,\n  0.5214436650276184,\n  0.6756998896598816,\n  -0.3020833432674408,\n  1.9052734375,\n  0.1545003205537796,\n  0.3087565004825592,\n  0.1013997420668602,\n  -0.7654622197151184,\n  1.39697265625,\n  -3.1077473163604736,\n  1.0208536386489868,\n  -4.431233882904053,\n  -0.3613484799861908,\n  1.9786783456802368,\n  -0.0701090469956398,\n  1.0261636972427368,\n  1.5538431406021118,\n  0.5113322138786316,\n  -3.4928386211395264,\n  2.0699870586395264,\n  0.61962890625,\n  3.2211101055145264,\n  0.9917399287223816,\n  0.5986328125,\n  -0.3736979067325592,\n  0.2490234375,\n  -0.68115234375,\n  -0.007853190414607525,\n  -0.90234375,\n  1.8781331777572632,\n  0.1018880233168602,\n  1.9859619140625,\n  -0.7013041377067566,\n  0.9212239384651184,\n  -0.5284830927848816,\n  2.7825520038604736,\n  0.1821085661649704,\n  -0.8136393427848816,\n  -2.3795573711395264,\n  -0.2462565153837204,\n  -0.2422688752412796,\n  1.93890380859375,\n  2.5216064453125,\n  0.6432291865348816,\n  -0.0037638347130268812,\n  -2.4912071228027344,\n  -0.3152059018611908,\n  -0.8232218623161316,\n  4.643229007720947,\n  -0.7154948115348816,\n  0.5448405146598816,\n  1.0557861328125,\n  -5.51416015625,\n  0.6741129755973816,\n  -1.42138671875,\n  0.5467936396598816,\n  -0.595947265625,\n  1.2355142831802368,\n  -0.111328125,\n  -0.726318359375,\n  -0.283203125,\n  -2.4937744140625,\n  0.4822591245174408,\n  0.7027180790901184,\n  -1.7431640625,\n  -2.3098957538604736,\n  1.0438638925552368,\n  0.8382161259651184,\n  0.2970377504825592,\n  -1.2758382558822632,\n  1.6875,\n  0.4448648989200592,\n  -1.0275064706802368,\n  -1.0050455331802368,\n  0.7049967646598816,\n  1.16650390625,\n  -0.0645345076918602,\n  -0.19073486328125,\n  -1.2496744394302368,\n  0.6988932490348816,\n  1.4801431894302368,\n  -0.1116129532456398,\n  -0.6075032353401184,\n  0.6316731572151184,\n  0.7765706181526184,\n  1.4552408456802368,\n  -1.05908203125,\n  2.3028361797332764,\n  -2.2594401836395264,\n  -1.130859375,\n  -0.1927490234375,\n  1.16357421875,\n  0.4351806640625,\n  -2.4532573223114014,\n  -0.1476643830537796,\n  -0.794921875,\n  0.88671875,\n  -1.4532877206802368,\n  1.12255859375,\n  -1.6938070058822632,\n  -0.806884765625,\n  2.4971923828125,\n  0.3229166567325592,\n  1.1935220956802368,\n  1.2139486074447632,\n  -2.619140625,\n  1.0305379629135132,\n  0.777252197265625,\n  -0.026123046875,\n  0.3023478090763092,\n  -0.3514811098575592,\n  0.4258219301700592,\n  1.9891763925552368,\n  0.8512369990348816,\n  1.0157877206802368,\n  1.7265625,\n  -1.8282877206802368,\n  0.4418131411075592,\n  1.3453775644302368,\n  -0.2214915007352829,\n  -2.0074870586395264,\n  2.1475830078125,\n  0.05609130859375,\n  -1.4183145761489868,\n  0.8955891728401184,\n  0.228515625,\n  0.8880208134651184,\n  0.197998046875,\n  2.2981770038604736,\n  -0.162322998046875,\n  0.4821980893611908,\n  0.7223307490348816,\n  -1.2461344003677368,\n  -0.5833943486213684,\n  -1.48077392578125,\n  -0.7699381709098816,\n  -2.0099284648895264,\n  -1.6507974863052368,\n  0.1811930388212204,\n  0.0828450545668602,\n  2.4752197265625,\n  0.6625569462776184,\n  1.5091959238052368,\n  -1.1682943105697632,\n  1.8878580331802368,\n  -3.5616862773895264,\n  1.1671549081802368,\n  -2.1744384765625,\n  1.5899912118911743,\n  -2.0670573711395264,\n  0.0408121757209301,\n  -2.3184406757354736,\n  -1.87109375,\n  0.3451741635799408,\n  2.8745930194854736,\n  -1.0657552480697632,\n  3.1234538555145264,\n  1.1617025136947632,\n  1.0277303457260132,\n  1.6686197519302368,\n  -0.2020670622587204,\n  1.68353271484375,\n  1.302978515625,\n  1.7268880605697632,\n  -0.6433919072151184,\n  2.6119792461395264,\n  -1.0965982675552368,\n  -2.9440104961395264,\n  2.305419921875,\n  0.7102457880973816,\n  -0.3640950620174408,\n  -2.8927409648895264,\n  2.1114909648895264,\n  -2.31884765625,\n  3.53271484375,\n  0.3130696713924408,\n  -1.98486328125,\n  -0.4728813171386719,\n  2.6637370586395264,\n  1.7467447519302368,\n  -0.18270237743854523,\n  1.8707681894302368,\n  -0.57958984375,\n  0.6405283808708191,\n  -2.1985676288604736,\n  0.9715169072151184,\n  -2.149169921875,\n  1.5091959238052368,\n  0.712646484375,\n  -1.2941080331802368,\n  2.0540363788604736,\n  -1.8291015625,\n  0.5688069462776184,\n  -2.9493815898895264,\n  0.653564453125,\n  -0.1569010466337204,\n  1.34228515625,\n  -0.8047282099723816,\n  1.0214742422103882,\n  -0.537841796875,\n  0.7085774540901184,\n  -0.3623046875,\n  0.3629557192325592,\n  3.13916015625,\n  -2.1238605976104736,\n  0.8716633915901184,\n  -0.153564453125,\n  -0.4535318911075592,\n  -0.8575032353401184,\n  -2.4739990234375,\n  -0.7076416015625,\n  -0.24090576171875,\n  -2.5911457538604736,\n  0.2350260466337204,\n  -3.8894855976104736,\n  -0.8704426884651184,\n  -2.9515788555145264,\n  0.6345621943473816,\n  -0.9253743290901184,\n  1.4230142831802368,\n  -0.9857584834098816,\n  -0.28857421875,\n  1.2596842050552368,\n  0.1959635466337204,\n  -1.9701436758041382,\n  0.638671875,\n  -0.1665852814912796,\n  1.4437662363052368,\n  -1.2127279043197632,\n  0.4532877504825592,\n  -3.293212890625,\n  -3.6022136211395264,\n  0.784515380859375,\n  0.9482218623161316,\n  0.9833170771598816,\n  0.2226969450712204,\n  -1.8350423574447632,\n  1.15625,\n  1.5577799081802368,\n  0.3318277895450592,\n  2.93359375,\n  1.3082681894302368,\n  -1.481689453125,\n  4.157877445220947,\n  0.6051025390625,\n  -1.2150064706802368,\n  0.0368245430290699,\n  -2.1425018310546875,\n  1.6394857168197632,\n  1.0425618886947632,\n  -1.2010091543197632,\n  2.2552897930145264,\n  0.8504231572151184,\n  2.6533203125,\n  -0.4834391176700592,\n  2.2047526836395264,\n  2.4599609375,\n  -1.6891275644302368,\n  2.8284504413604736,\n  0.5563151240348816,\n  -1.7091432809829712,\n  0.9017741084098816,\n  -0.4549967348575592,\n  -2.3499348163604736,\n  2.6279296875,\n  -5.008138179779053,\n  1.7784017324447632,\n  -1.5437825918197632,\n  1.006591796875,\n  -1.1590982675552368,\n  0.83984375,\n  0.4049479067325592,\n  1.2227783203125,\n  0.1030985489487648,\n  -0.013590495102107525,\n  -2.31768798828125,\n  -0.1530965119600296,\n  0.8824869990348816,\n  ...],\n [-0.585156261920929,\n  3.392578125,\n  2.736157178878784,\n  2.617968797683716,\n  -0.544140636920929,\n  -1.318994164466858,\n  0.4165893495082855,\n  0.22353515028953552,\n  -1.11083984375,\n  0.27753907442092896,\n  -1.294958472251892,\n  4.221850395202637,\n  0.8255370855331421,\n  -1.1214110851287842,\n  1.0442383289337158,\n  0.332275390625,\n  -0.3395752012729645,\n  2.1903319358825684,\n  -0.22142334282398224,\n  0.05205078050494194,\n  -1.994531273841858,\n  -2.362841844558716,\n  1.224707007408142,\n  -2.075976610183716,\n  1.8251831531524658,\n  -1.1453933715820312,\n  -2.051745653152466,\n  -1.047607421875,\n  -1.029394507408142,\n  1.884033203125,\n  -0.738476574420929,\n  -2.961108446121216,\n  -3.9620604515075684,\n  0.06562499701976776,\n  1.6724121570587158,\n  -0.3619018495082855,\n  -1.016992211341858,\n  3.758013963699341,\n  -1.5128662586212158,\n  -1.5837891101837158,\n  3.4540038108825684,\n  -0.757031261920929,\n  -3.266827344894409,\n  1.0029418468475342,\n  3.4864745140075684,\n  0.985119640827179,\n  1.9056885242462158,\n  -0.739331066608429,\n  1.721093773841858,\n  -1.8466675281524658,\n  3.594268798828125,\n  -2.8388671875,\n  -0.10734863579273224,\n  -2.20086669921875,\n  -1.665136694908142,\n  2.5140624046325684,\n  -0.9654175043106079,\n  -0.3560119569301605,\n  0.2728027403354645,\n  -2.4773926734924316,\n  3.36083984375,\n  2.431347608566284,\n  -1.13702392578125,\n  2.533935546875,\n  -0.42138671875,\n  1.4792969226837158,\n  0.6905273199081421,\n  2.2736573219299316,\n  -0.2845458984375,\n  -1.1991150379180908,\n  0.14234618842601776,\n  -3.0763182640075684,\n  0.08840332180261612,\n  -2.5653076171875,\n  2.6228270530700684,\n  -1.9978516101837158,\n  2.7210450172424316,\n  -1.428466796875,\n  2.410083055496216,\n  -2.212890625,\n  0.29847413301467896,\n  1.023779273033142,\n  1.920654296875,\n  0.839306652545929,\n  2.599963426589966,\n  1.362268090248108,\n  -1.625878930091858,\n  -2.379101514816284,\n  -1.825292944908142,\n  1.869531273841858,\n  2.345898389816284,\n  -6.568701267242432,\n  -1.232324242591858,\n  1.439697265625,\n  1.606201171875,\n  0.31965333223342896,\n  -0.599902331829071,\n  0.9923340082168579,\n  -0.14028319716453552,\n  -0.12783202528953552,\n  -1.789788842201233,\n  0.472412109375,\n  0.49273681640625,\n  -2.9458985328674316,\n  -0.010897827334702015,\n  -0.327880859375,\n  0.16791991889476776,\n  1.530065894126892,\n  -0.2669921815395355,\n  -0.5184692144393921,\n  1.8705565929412842,\n  3.035888671875,\n  -3.159130811691284,\n  -0.08510742336511612,\n  7.2734375,\n  -2.0401854515075684,\n  2.713623046875,\n  1.105566382408142,\n  -1.6742675304412842,\n  3.2955079078674316,\n  0.0411376953125,\n  -1.8107483386993408,\n  0.8908447027206421,\n  -0.8108886480331421,\n  -2.985119581222534,\n  0.47698974609375,\n  -1.1057521104812622,\n  -1.138696312904358,\n  -0.633007824420929,\n  4.764452934265137,\n  -0.28297120332717896,\n  2.0663819313049316,\n  -1.0395996570587158,\n  -3.0517578125,\n  -1.6920654773712158,\n  1.61968994140625,\n  3.1294922828674316,\n  -2.746997117996216,\n  0.689257800579071,\n  6.04931640625,\n  0.10432128608226776,\n  -1.531494140625,\n  1.8695800304412842,\n  0.4403442442417145,\n  0.7198241949081421,\n  -1.093896508216858,\n  0.9791504144668579,\n  0.7196289300918579,\n  -0.07502441108226776,\n  -2.5630860328674316,\n  0.225830078125,\n  -3.1376953125,\n  -1.174218773841858,\n  -0.32624512910842896,\n  3.294384717941284,\n  3.609912157058716,\n  1.753808617591858,\n  3.3296875953674316,\n  0.20234374701976776,\n  3.4905152320861816,\n  -4.224999904632568,\n  1.4284484386444092,\n  3.739471435546875,\n  0.18851318955421448,\n  -1.014013648033142,\n  -0.7127822637557983,\n  2.758837938308716,\n  -1.56060791015625,\n  0.076416015625,\n  0.8220764398574829,\n  1.7827880382537842,\n  -0.2718566954135895,\n  -1.1817138195037842,\n  -3.0848631858825684,\n  -0.20046386122703552,\n  -1.647558569908142,\n  -3.638964891433716,\n  -3.2823729515075684,\n  0.2823852598667145,\n  -0.4393066465854645,\n  -0.14238281548023224,\n  0.793469250202179,\n  -1.2874023914337158,\n  -1.7821502685546875,\n  5.91015625,\n  2.337695360183716,\n  0.2752441465854645,\n  -0.747802734375,\n  0.5782715082168579,\n  -0.07421875,\n  2.6047606468200684,\n  -2.786914110183716,\n  -2.0686278343200684,\n  3.942578077316284,\n  3.755859375,\n  -0.7866857647895813,\n  -1.8197753429412842,\n  -0.230712890625,\n  3.482617139816284,\n  -1.171240210533142,\n  -2.038378953933716,\n  0.8575989007949829,\n  2.4391796588897705,\n  1.787207007408142,\n  0.9341186285018921,\n  -3.63623046875,\n  -2.1961426734924316,\n  -6.014257907867432,\n  -3.295886278152466,\n  0.42622071504592896,\n  3.2800230979919434,\n  -4.222680568695068,\n  -3.48583984375,\n  4.049878120422363,\n  0.21440429985523224,\n  -5.115918159484863,\n  0.8966919183731079,\n  -0.2899414002895355,\n  2.9222347736358643,\n  2.151171922683716,\n  -0.802929699420929,\n  -3.366406202316284,\n  0.02475585974752903,\n  -0.5132232904434204,\n  2.625683546066284,\n  1.7874023914337158,\n  2.140393018722534,\n  -0.172607421875,\n  1.979589819908142,\n  -3.8053956031799316,\n  -1.1804993152618408,\n  -0.12392578274011612,\n  -0.42292481660842896,\n  0.9161132574081421,\n  -1.4816405773162842,\n  -0.3398803770542145,\n  -1.5068359375,\n  0.08698730170726776,\n  -0.20212402939796448,\n  0.18988037109375,\n  0.537304699420929,\n  -0.8984009027481079,\n  1.778295874595642,\n  -2.327301025390625,\n  1.0526916980743408,\n  -0.6874023675918579,\n  2.0033202171325684,\n  3.8390746116638184,\n  0.36909180879592896,\n  -1.809790015220642,\n  0.1992752104997635,\n  2.359326124191284,\n  -1.4062011241912842,\n  0.17758789658546448,\n  -1.434118628501892,\n  0.7819244265556335,\n  -0.2757812440395355,\n  -2.7327637672424316,\n  -0.2544189393520355,\n  3.9120116233825684,\n  0.715136706829071,\n  -0.701123058795929,\n  -2.9156250953674316,\n  -1.4894530773162842,\n  -0.3838867247104645,\n  -1.093481421470642,\n  -0.5973159670829773,\n  0.20781250298023224,\n  -2.080078125,\n  -0.9925292730331421,\n  2.7842774391174316,\n  -1.0914885997772217,\n  1.369561791419983,\n  -1.216699242591858,\n  -2.920459032058716,\n  2.4608397483825684,\n  2.207226514816284,\n  2.936230421066284,\n  3.082470655441284,\n  0.24208374321460724,\n  -4.725781440734863,\n  1.7355937957763672,\n  -2.051806688308716,\n  0.8501037359237671,\n  0.204345703125,\n  0.23288574814796448,\n  4.017529487609863,\n  -2.4744873046875,\n  -0.746350109577179,\n  -1.263403296470642,\n  0.4742675721645355,\n  -0.13701172173023224,\n  -1.3283294439315796,\n  -1.627539038658142,\n  1.5108153820037842,\n  5.249737739562988,\n  0.9634765386581421,\n  -3.1607422828674316,\n  2.1212401390075684,\n  0.959057629108429,\n  -0.5379394292831421,\n  1.8524901866912842,\n  1.177972435951233,\n  3.1011719703674316,\n  -1.552148461341858,\n  -0.9121459722518921,\n  -1.9457519054412842,\n  0.687182605266571,\n  -4.437402248382568,\n  1.4654662609100342,\n  -0.531689465045929,\n  -0.600659191608429,\n  -1.2206542491912842,\n  -4.179394721984863,\n  -2.3368163108825684,\n  -1.4528045654296875,\n  1.5944149494171143,\n  -6.260546684265137,\n  1.254980444908142,\n  3.334179639816284,\n  1.2213866710662842,\n  1.604101538658142,\n  -2.10888671875,\n  -0.594921886920929,\n  1.223779320716858,\n  -1.51171875,\n  1.361840844154358,\n  -4.678955078125,\n  2.8992919921875,\n  1.2380859851837158,\n  -5.6640625,\n  -2.0009522438049316,\n  0.581225574016571,\n  0.5024169683456421,\n  4.312255859375,\n  -0.319091796875,\n  -0.22250977158546448,\n  1.3753173351287842,\n  -0.21296386420726776,\n  0.11530761420726776,\n  -1.34375,\n  2.2703614234924316,\n  -1.301416039466858,\n  -1.879785180091858,\n  -1.1391479969024658,\n  3.823925733566284,\n  -5.830273628234863,\n  1.946374535560608,\n  -2.913012742996216,\n  4.415112495422363,\n  2.044921875,\n  -1.2643554210662842,\n  3.1986327171325684,\n  0.4964843690395355,\n  -1.179834008216858,\n  1.897924780845642,\n  2.858236789703369,\n  -0.9869659543037415,\n  -1.356909155845642,\n  -1.3305556774139404,\n  1.194342017173767,\n  -0.11435546725988388,\n  4.630663871765137,\n  1.849389672279358,\n  0.16064453125,\n  3.3729004859924316,\n  0.06386718899011612,\n  1.616601586341858,\n  -1.7592804431915283,\n  -1.1600220203399658,\n  -4.9443359375,\n  -0.83184814453125,\n  -1.653051733970642,\n  -2.4193115234375,\n  -0.4124999940395355,\n  0.9474579095840454,\n  -0.818359375,\n  2.9818358421325684,\n  0.511096179485321,\n  -0.04423828050494194,\n  1.1473404169082642,\n  1.1805846691131592,\n  -2.1939454078674316,\n  -2.4498047828674316,\n  -0.26005858182907104,\n  0.8506553769111633,\n  -1.445765733718872,\n  1.348388671875,\n  1.7720947265625,\n  -2.815722703933716,\n  -1.3498046398162842,\n  -0.15283203125,\n  1.981835961341858,\n  1.6155273914337158,\n  0.14820709824562073,\n  4.641259670257568,\n  0.04766540601849556,\n  -4.1131486892700195,\n  1.4252440929412842,\n  0.1930919587612152,\n  1.95849609375,\n  -2.0267577171325684,\n  0.27880859375,\n  -0.780810534954071,\n  -3.77825927734375,\n  1.140527367591858,\n  0.779296875,\n  -0.03666992112994194,\n  -6.139257907867432,\n  3.413623094558716,\n  -2.24609375,\n  -2.0855469703674316,\n  -2.076709032058716,\n  -3.2068848609924316,\n  0.11860351264476776,\n  1.499267578125,\n  3.5330262184143066,\n  -3.924121141433716,\n  1.66400146484375,\n  4.839062690734863,\n  2.3860840797424316,\n  -2.79443359375,\n  2.2056031227111816,\n  2.965380907058716,\n  1.9673340320587158,\n  0.02861328050494194,\n  -2.6708006858825684,\n  -1.5725586414337158,\n  0.8447265625,\n  1.238500952720642,\n  0.310546875,\n  1.611083984375,\n  4.852002143859863,\n  0.2760348320007324,\n  -2.526776075363159,\n  0.20992021262645721,\n  2.1065430641174316,\n  2.506427049636841,\n  -3.220703125,\n  0.647216796875,\n  -2.2371582984924316,\n  -0.06191406399011612,\n  -2.0377440452575684,\n  0.17307129502296448,\n  1.2303955554962158,\n  1.951318383216858,\n  -2.8768553733825684,\n  -0.637377917766571,\n  2.010546922683716,\n  3.14617919921875,\n  -6.117773532867432,\n  -0.4703308045864105,\n  1.148767113685608,\n  1.594995141029358,\n  -2.773193359375,\n  1.001074194908142,\n  1.0591552257537842,\n  -4.2838134765625,\n  -5.166113376617432,\n  0.421975702047348,\n  -1.0272643566131592,\n  3.207348585128784,\n  2.8283448219299316,\n  3.7461915016174316,\n  -1.134985327720642,\n  0.584716796875,\n  0.5351318120956421,\n  0.04609375074505806,\n  -1.9345703125,\n  1.887731909751892,\n  0.39653319120407104,\n  0.9310058355331421,\n  3.141650438308716,\n  3.1473388671875,\n  -2.991503953933716,\n  -2.6302857398986816,\n  -1.3551514148712158,\n  -1.1669433116912842,\n  0.828808605670929,\n  0.3409667909145355,\n  -0.860888659954071,\n  0.34783935546875,\n  0.0107421875,\n  1.3991210460662842,\n  -2.7068238258361816,\n  2.1719970703125,\n  -0.781542956829071,\n  -2.455761671066284,\n  -0.689257800579071,\n  -0.832763671875,\n  4.838476657867432,\n  -3.6080079078674316,\n  -1.410498023033142,\n  -1.737084984779358,\n  -4.076855659484863,\n  -3.106884717941284,\n  1.591552734375,\n  -0.3716796934604645,\n  0.05319824069738388,\n  0.2767089903354645,\n  -2.8909668922424316,\n  -2.0459961891174316,\n  0.826568603515625,\n  -3.050488233566284,\n  0.685742199420929,\n  -0.5138915777206421,\n  0.991015613079071,\n  1.5265624523162842,\n  1.718359351158142,\n  -1.427587866783142,\n  -1.861486792564392,\n  -1.3833496570587158,\n  -1.487402319908142,\n  0.4166015684604645,\n  0.3221191465854645,\n  0.08928222954273224,\n  0.5616210699081421,\n  1.3566405773162842,\n  0.44819337129592896,\n  -2.9775421619415283,\n  0.6233886480331421,\n  -0.10332031548023224,\n  3.289511203765869,\n  1.098730444908142,\n  -0.4178222715854645,\n  2.7633299827575684,\n  1.112402319908142,\n  2.4554686546325684,\n  -0.541210949420929,\n  0.41425782442092896,\n  -1.085717797279358,\n  -1.3730957508087158,\n  -0.8578125238418579,\n  3.0201048851013184,\n  -2.6463866233825684,\n  -2.680126905441284,\n  0.19176025688648224,\n  -1.580102562904358,\n  -0.4910888671875,\n  1.08892822265625,\n  -1.1229979991912842,\n  -1.0419921875,\n  -2.5329041481018066,\n  0.18105468153953552,\n  0.923535168170929,\n  -1.295312523841858,\n  -2.7015137672424316,\n  3.3822264671325684,\n  -2.534472703933716,\n  3.5077271461486816,\n  0.31689453125,\n  3.221630811691284,\n  5.239355564117432,\n  0.8031250238418579,\n  2.75927734375,\n  1.7354736328125,\n  -1.135217308998108,\n  3.1739501953125,\n  -2.471142530441284,\n  2.649707078933716,\n  -2.258593797683716,\n  2.2623534202575684,\n  -0.652099609375,\n  -2.6416015625,\n  1.2330642938613892,\n  -2.429248094558716,\n  -1.993261694908142,\n  2.9747071266174316,\n  -0.03310547024011612,\n  4.977197170257568,\n  0.6221923828125,\n  1.21685791015625,\n  1.195593237876892,\n  0.602783203125,\n  2.636181592941284,\n  -2.4922852516174316,\n  -3.0033202171325684,\n  -4.14813232421875,\n  -2.525805711746216,\n  -1.6403319835662842,\n  2.8906922340393066,\n  -2.3901915550231934,\n  1.8538086414337158,\n  -1.161901831626892,\n  -0.06513671576976776,\n  0.920117199420929,\n  2.790576219558716,\n  -0.640332043170929,\n  -0.5129638910293579,\n  0.04150695726275444,\n  -1.229437232017517,\n  -1.1602051258087158,\n  -3.0501952171325684,\n  0.00022954940504860133,\n  -0.559252917766571,\n  0.705517590045929,\n  -0.3277343809604645,\n  2.5540771484375,\n  -2.486572265625,\n  -1.1748535633087158,\n  1.9232666492462158,\n  1.825720191001892,\n  -1.7037842273712158,\n  1.4186553955078125,\n  0.9983886480331421,\n  2.144580125808716,\n  -2.5472655296325684,\n  -2.7070069313049316,\n  1.682373046875,\n  1.191992163658142,\n  0.744946300983429,\n  0.6357421875,\n  -0.0032470703590661287,\n  0.9920654296875,\n  4.091113090515137,\n  -1.6613037586212158,\n  -4.800195217132568,\n  3.59521484375,\n  -4.053124904632568,\n  -0.3299804627895355,\n  1.189794898033142,\n  -1.71142578125,\n  -0.5717620849609375,\n  8.226269721984863,\n  -3.0409178733825684,\n  -1.858984351158142,\n  -0.0068359375,\n  1.6775391101837158,\n  -1.093847632408142,\n  3.831738233566284,\n  -0.502490222454071,\n  4.910937309265137,\n  -2.1844894886016846,\n  -16.084375381469727,\n  -0.27055662870407104,\n  -1.9238770008087158,\n  -0.18190917372703552,\n  -1.3215820789337158,\n  -2.5118651390075684,\n  0.46354979276657104,\n  2.809326171875,\n  -2.3424315452575684,\n  -1.8894531726837158,\n  -0.3516601622104645,\n  4.404345512390137,\n  1.4140682220458984,\n  -0.11680908501148224,\n  -1.649682641029358,\n  0.05625305324792862,\n  0.8843017816543579,\n  -4.274969577789307,\n  -0.10371093451976776,\n  1.392126441001892,\n  -3.8737425804138184,\n  2.0970458984375,\n  -3.3214354515075684,\n  -0.465301513671875,\n  2.017773389816284,\n  -0.40693360567092896,\n  1.0310790538787842,\n  -1.374609351158142,\n  -4.994482517242432,\n  5.830859184265137,\n  -0.56939697265625,\n  1.5120360851287842,\n  -1.0846436023712158,\n  0.789660632610321,\n  -0.20163574814796448,\n  -1.272216796875,\n  -0.28070068359375,\n  0.973437488079071,\n  -1.1847655773162842,\n  -0.18437500298023224,\n  1.8202636241912842,\n  -1.313867211341858,\n  -0.04050292819738388,\n  0.8291015625,\n  -0.11196289211511612,\n  -0.6510864496231079,\n  -1.380529761314392,\n  -1.9392578601837158,\n  0.03590087965130806,\n  1.013085961341858,\n  0.9884322881698608,\n  -2.734301805496216,\n  -0.4986205995082855,\n  3.6738038063049316,\n  -0.21783447265625,\n  1.561669945716858,\n  -0.4071411192417145,\n  -0.15620116889476776,\n  -3.346240282058716,\n  -1.5569336414337158,\n  -1.1540038585662842,\n  1.7829101085662842,\n  0.5932372808456421,\n  -0.5424529910087585,\n  1.269873023033142,\n  0.6341931223869324,\n  -1.3179199695587158,\n  1.6873047351837158,\n  -1.287207007408142,\n  2.370288133621216,\n  -1.676855444908142,\n  1.691992163658142,\n  1.6857757568359375,\n  -0.5420898199081421,\n  -1.24664306640625,\n  -1.4070312976837158,\n  -3.54541015625,\n  -2.9729645252227783,\n  -2.6104493141174316,\n  -10.457812309265137,\n  3.7383790016174316,\n  -0.60498046875,\n  0.436279296875,\n  0.5936279296875,\n  -2.713671922683716,\n  2.294970750808716,\n  1.393945336341858,\n  0.3432479798793793,\n  -1.26873779296875,\n  2.089306592941284,\n  1.540380835533142,\n  -3.2265625,\n  3.6490235328674316,\n  -0.631848156452179,\n  0.3788085877895355,\n  -2.497607469558716,\n  -1.237695336341858,\n  2.53515625,\n  -3.888867139816284,\n  2.3987183570861816,\n  -2.848583936691284,\n  -1.561242699623108,\n  2.5138182640075684,\n  3.503247022628784,\n  -3.2887940406799316,\n  2.192462205886841,\n  1.017187476158142,\n  -1.8076293468475342,\n  1.4368164539337158,\n  -0.14658203721046448,\n  2.831494092941284,\n  0.3692871034145355,\n  0.575146496295929,\n  1.1711914539337158,\n  0.19167479872703552,\n  1.083642601966858,\n  -0.9657226800918579,\n  -2.6358399391174316,\n  2.1627197265625,\n  0.3863769471645355,\n  3.0339112281799316,\n  -1.4023253917694092,\n  2.269775390625,\n  -1.214379906654358,\n  2.5567383766174316,\n  -1.53936767578125,\n  -2.772167921066284,\n  -1.707299828529358,\n  -0.759814441204071,\n  -0.3609863221645355,\n  0.621447741985321,\n  1.3514404296875,\n  0.02521972730755806,\n  -1.4790771007537842,\n  -0.9256812930107117,\n  -0.4937744140625,\n  -0.33543699979782104,\n  4.525390625,\n  -3.240039110183716,\n  0.514599621295929,\n  2.548510789871216,\n  -7.875683784484863,\n  -0.785382091999054,\n  -0.261056512594223,\n  1.9956543445587158,\n  -0.35468751192092896,\n  0.978271484375,\n  1.901269555091858,\n  -1.6367676258087158,\n  2.326367139816284,\n  -3.4360108375549316,\n  2.012402296066284,\n  1.340185523033142,\n  -0.6923675537109375,\n  -2.2676758766174316,\n  1.879638671875,\n  3.9046874046325684,\n  0.2743164002895355,\n  -1.5493896007537842,\n  -0.37822264432907104,\n  -0.2291259765625,\n  1.8098633289337158,\n  -2.173046827316284,\n  -0.242462158203125,\n  1.506445288658142,\n  -1.8930175304412842,\n  0.08016052097082138,\n  0.541064441204071,\n  2.495312452316284,\n  -0.06791992485523224,\n  0.42070311307907104,\n  2.705371141433716,\n  1.437597632408142,\n  0.19387206435203552,\n  1.4739868640899658,\n  -1.8468201160430908,\n  3.8525023460388184,\n  -2.055859327316284,\n  -1.3148590326309204,\n  -0.18930664658546448,\n  3.2330079078674316,\n  -1.112158179283142,\n  -0.971173107624054,\n  2.429492235183716,\n  0.3966064453125,\n  1.8318359851837158,\n  0.1873779296875,\n  0.7430664300918579,\n  -3.777905225753784,\n  -0.946728527545929,\n  1.7313232421875,\n  0.5260254144668579,\n  -2.0228514671325684,\n  1.32763671875,\n  -4.007128715515137,\n  -0.40013426542282104,\n  -0.24890747666358948,\n  1.537500023841858,\n  -0.973339855670929,\n  -1.6181151866912842,\n  1.5494384765625,\n  2.338427782058716,\n  2.3143553733825684,\n  3.366503953933716,\n  1.7111327648162842,\n  -2.1864256858825684,\n  -0.5159912109375,\n  1.570703148841858,\n  -0.6886566281318665,\n  -3.073535203933716,\n  0.705151379108429,\n  0.5213867425918579,\n  -2.80401611328125,\n  0.3666015565395355,\n  1.068359375,\n  1.11083984375,\n  -1.319433569908142,\n  4.124963283538818,\n  0.12191619724035263,\n  -0.4018798768520355,\n  1.895410180091858,\n  -3.4961180686950684,\n  -0.2510620057582855,\n  -1.6439697742462158,\n  -1.169427514076233,\n  -1.76611328125,\n  0.3592773377895355,\n  1.034204125404358,\n  -0.861401379108429,\n  4.029858589172363,\n  -0.542187511920929,\n  3.822705030441284,\n  -0.595947265625,\n  1.073388695716858,\n  -2.192675828933716,\n  0.5701659917831421,\n  -4.8245849609375,\n  1.7767059803009033,\n  0.7022949457168579,\n  -1.8404052257537842,\n  -3.5345215797424316,\n  -0.08359374850988388,\n  0.643292248249054,\n  2.5980224609375,\n  -0.983105480670929,\n  2.4762206077575684,\n  -0.921630859375,\n  0.8765869140625,\n  0.740954577922821,\n  -0.858349621295929,\n  2.3617310523986816,\n  3.195556640625,\n  0.2833007872104645,\n  0.8677978515625,\n  2.265820264816284,\n  -1.747167944908142,\n  -7.1611328125,\n  3.5784668922424316,\n  1.11383056640625,\n  -0.21561279892921448,\n  -2.7158203125,\n  5.359277248382568,\n  -1.8375365734100342,\n  3.9666991233825684,\n  0.7489258050918579,\n  -3.36083984375,\n  1.260961890220642,\n  1.050634741783142,\n  1.742334008216858,\n  -0.32401198148727417,\n  3.4696288108825684,\n  -3.236621141433716,\n  1.8511139154434204,\n  -3.4745116233825684,\n  2.5982422828674316,\n  -1.597558617591858,\n  1.497717261314392,\n  -1.242028832435608,\n  0.330810546875,\n  3.0997071266174316,\n  -1.236181616783142,\n  0.07355956733226776,\n  -0.588085949420929,\n  0.33208006620407104,\n  -0.618457019329071,\n  0.04140625149011612,\n  -2.2862548828125,\n  1.0437805652618408,\n  0.30512696504592896,\n  -0.7090820074081421,\n  0.49176025390625,\n  0.8583984375,\n  3.5301756858825684,\n  -4.916699409484863,\n  1.4965331554412842,\n  -1.794824242591858,\n  -0.6993163824081421,\n  -1.633081078529358,\n  -4.381299018859863,\n  -1.9287841320037842,\n  -1.60919189453125,\n  -2.490917921066284,\n  -1.810937523841858,\n  -2.8614258766174316,\n  1.964453101158142,\n  -1.6063964366912842,\n  2.3714599609375,\n  -0.10157088935375214,\n  -0.860107421875,\n  -3.9671874046325684,\n  -0.761126697063446,\n  -0.40361326932907104,\n  2.3434205055236816,\n  -1.7752501964569092,\n  1.798681616783142,\n  0.39966124296188354,\n  0.09921874850988388,\n  -2.7118163108825684,\n  0.9405364990234375,\n  -6.048193454742432,\n  -3.539599657058716,\n  0.995251476764679,\n  3.2554564476013184,\n  0.8863769769668579,\n  0.08701171725988388,\n  -0.36445313692092896,\n  2.845996141433716,\n  2.236621141433716,\n  2.177685499191284,\n  4.228906154632568,\n  0.2769531309604645,\n  -1.6527831554412842,\n  1.608007788658142,\n  1.2843506336212158,\n  0.5693359375,\n  0.9563232660293579,\n  -2.3176300525665283,\n  3.07470703125,\n  1.5432860851287842,\n  -2.0057129859924316,\n  2.021289110183716,\n  0.990771472454071,\n  2.767822265625,\n  -2.659594774246216,\n  2.9618773460388184,\n  0.528515636920929,\n  -0.17119140923023224,\n  3.395458936691284,\n  -2.785839796066284,\n  -1.3916480541229248,\n  0.6650390625,\n  -0.09686279296875,\n  -4.872851371765137,\n  2.074444532394409,\n  -6.161523342132568,\n  0.878857433795929,\n  -2.2352538108825684,\n  -0.231201171875,\n  -0.3265136778354645,\n  2.264453172683716,\n  -0.0014160156715661287,\n  2.1579833030700684,\n  1.8806579113006592,\n  -2.254101514816284,\n  -1.96795654296875,\n  -1.585961937904358,\n  4.668359279632568,\n  ...],\n [-1.8252650499343872,\n  4.422246932983398,\n  1.103704571723938,\n  0.801641583442688,\n  -0.3719540536403656,\n  1.7098562717437744,\n  -2.1549015045166016,\n  1.9175291061401367,\n  -0.2341424822807312,\n  -1.6728980541229248,\n  -4.526181221008301,\n  1.353222131729126,\n  0.3462364673614502,\n  -2.0856235027313232,\n  -2.4019484519958496,\n  -2.6702358722686768,\n  1.9938267469406128,\n  2.165062427520752,\n  -3.539353132247925,\n  1.4356863498687744,\n  -0.0307152159512043,\n  -1.110339879989624,\n  1.5368303060531616,\n  -2.497860908508301,\n  -1.303594708442688,\n  -1.5179712772369385,\n  -0.9183117151260376,\n  -2.880905866622925,\n  -2.703310966491699,\n  0.9732549786567688,\n  -1.4864675998687744,\n  -4.488095283508301,\n  -1.6892380714416504,\n  -1.1814706325531006,\n  1.7597888708114624,\n  -1.703497052192688,\n  -0.852777361869812,\n  1.7714815139770508,\n  -1.6101480722427368,\n  1.8955775499343872,\n  1.0611506700515747,\n  1.3431396484375,\n  0.0642453134059906,\n  0.5978626012802124,\n  -0.679082989692688,\n  -5.102231025695801,\n  0.6696341633796692,\n  2.112717390060425,\n  -3.914527416229248,\n  -2.985252857208252,\n  2.706906318664551,\n  4.198474884033203,\n  1.0207868814468384,\n  -0.9114990234375,\n  3.9063546657562256,\n  1.625604510307312,\n  -1.6901488304138184,\n  0.3613019585609436,\n  0.078629270195961,\n  0.3217308521270752,\n  0.5253208875656128,\n  -0.2281145304441452,\n  -5.285237789154053,\n  0.1650012731552124,\n  0.7357468605041504,\n  1.511346697807312,\n  -0.1163315549492836,\n  0.2788899838924408,\n  -1.8099888563156128,\n  -0.5391119122505188,\n  2.0950984954833984,\n  0.6200125813484192,\n  -1.2659273147583008,\n  -1.569324254989624,\n  -2.851109027862549,\n  -2.7816104888916016,\n  5.496535301208496,\n  -0.905087411403656,\n  6.085658550262451,\n  -0.9094122052192688,\n  0.6696602702140808,\n  -1.023693323135376,\n  1.453125,\n  -1.0274991989135742,\n  1.1201636791229248,\n  4.111374855041504,\n  -0.6946846842765808,\n  1.7868070602416992,\n  3.2967472076416016,\n  2.025181293487549,\n  -0.6008068323135376,\n  1.5678478479385376,\n  1.8678385019302368,\n  -1.2490060329437256,\n  -1.0825369358062744,\n  -0.273832768201828,\n  -0.8345540165901184,\n  -0.8810918927192688,\n  -2.179013252258301,\n  -2.0625,\n  1.2688685655593872,\n  0.8199172019958496,\n  -1.8971412181854248,\n  -2.83740234375,\n  2.332496166229248,\n  -2.9065754413604736,\n  0.1112351194024086,\n  0.5523332953453064,\n  0.59228515625,\n  -0.4192708432674408,\n  0.5668712854385376,\n  -1.2714611291885376,\n  -1.711542010307312,\n  -5.188662528991699,\n  2.326648473739624,\n  -1.6834077835083008,\n  4.378406524658203,\n  6.4070868492126465,\n  1.4327566623687744,\n  -3.8292410373687744,\n  -0.7475818395614624,\n  0.0882510244846344,\n  -2.6136066913604736,\n  1.2855980396270752,\n  1.1378929615020752,\n  0.4269263744354248,\n  0.5218667984008789,\n  -2.810267925262451,\n  3.295665979385376,\n  0.6152605414390564,\n  1.8153831958770752,\n  -1.8285202980041504,\n  -0.3087536096572876,\n  -0.589532732963562,\n  2.483046770095825,\n  3.294299840927124,\n  0.5654529333114624,\n  -0.33777618408203125,\n  -2.4187710285186768,\n  3.5345051288604736,\n  -0.261532723903656,\n  2.260044574737549,\n  1.3154064416885376,\n  -0.0486319400370121,\n  1.676501989364624,\n  -3.4058780670166016,\n  1.006719708442688,\n  0.831426739692688,\n  -0.4581415057182312,\n  -1.720470666885376,\n  -0.8913865089416504,\n  2.263439416885376,\n  -0.4970877468585968,\n  -0.7268996238708496,\n  -1.4294084310531616,\n  3.9567813873291016,\n  -0.832882821559906,\n  3.241257429122925,\n  -0.591610848903656,\n  1.7527843713760376,\n  0.0293898805975914,\n  1.6351957321166992,\n  2.17779541015625,\n  2.7437222003936768,\n  1.7933872938156128,\n  -0.20013427734375,\n  1.0679408311843872,\n  0.0113990418612957,\n  -0.0745907723903656,\n  -0.746038556098938,\n  -0.7530226707458496,\n  1.435846209526062,\n  1.6668294668197632,\n  -3.3130812644958496,\n  -1.9507650136947632,\n  -4.023716449737549,\n  -3.163876533508301,\n  -0.8682570457458496,\n  2.526024341583252,\n  -0.0491071417927742,\n  1.9764927625656128,\n  -0.3802838921546936,\n  1.3812037706375122,\n  -0.2034330815076828,\n  -4.303013324737549,\n  0.1336030513048172,\n  -1.3118489980697632,\n  -1.9205824136734009,\n  0.0983305424451828,\n  0.2976422905921936,\n  -0.7327662706375122,\n  -4.886997699737549,\n  1.6441824436187744,\n  3.801234722137451,\n  -2.589308977127075,\n  4.3115739822387695,\n  0.1168387308716774,\n  2.2197439670562744,\n  1.8781273365020752,\n  0.5405157208442688,\n  3.008742570877075,\n  3.986607074737549,\n  1.7808488607406616,\n  -0.8325543999671936,\n  -0.8329671025276184,\n  -2.1119792461395264,\n  -3.6647136211395264,\n  -0.4644601047039032,\n  -1.3925257921218872,\n  0.8262242078781128,\n  0.9706653356552124,\n  -2.596470355987549,\n  -0.02213541604578495,\n  -0.12928372621536255,\n  1.1693871021270752,\n  2.026134729385376,\n  2.2086880207061768,\n  0.4018612802028656,\n  3.3980014324188232,\n  -1.7340524196624756,\n  -0.690185546875,\n  -1.4846627712249756,\n  1.6590169668197632,\n  -2.5127999782562256,\n  0.9394996166229248,\n  -0.7281450629234314,\n  -0.843744158744812,\n  -0.6038527488708496,\n  -1.033336877822876,\n  -0.3969232439994812,\n  -4.692490577697754,\n  -1.5689406394958496,\n  1.573358416557312,\n  -0.1945451945066452,\n  -0.2351887971162796,\n  2.190708637237549,\n  -2.004432201385498,\n  -1.1949288845062256,\n  -1.3232131004333496,\n  -0.408017098903656,\n  -0.8028739094734192,\n  2.3843472003936768,\n  -1.1587263345718384,\n  3.5229928493499756,\n  -0.4678199291229248,\n  3.961956262588501,\n  0.7466633915901184,\n  0.291718989610672,\n  0.5115094780921936,\n  -3.842587471008301,\n  0.955682635307312,\n  -3.053431987762451,\n  -0.9314197301864624,\n  -2.654232978820801,\n  -2.027355432510376,\n  0.7131016850471497,\n  1.1756068468093872,\n  -1.6002836227416992,\n  0.7543131709098816,\n  1.2879689931869507,\n  0.5827752947807312,\n  -1.4505178928375244,\n  -1.5293811559677124,\n  -6.545665740966797,\n  0.4102608859539032,\n  -0.00015113467816263437,\n  1.5918840169906616,\n  0.2470034658908844,\n  -3.3850998878479004,\n  -0.3213064968585968,\n  -1.342401385307312,\n  1.1972423791885376,\n  0.3029596209526062,\n  -2.234020471572876,\n  -1.9054638147354126,\n  -3.577822685241699,\n  1.4218982458114624,\n  -2.2298641204833984,\n  0.908807635307312,\n  3.638718366622925,\n  -1.5764974355697632,\n  1.5566493272781372,\n  2.7320613861083984,\n  3.870654821395874,\n  -2.5960285663604736,\n  -0.4059070348739624,\n  0.1273106187582016,\n  -0.1872965544462204,\n  -2.635654926300049,\n  0.7988048791885376,\n  -2.8673386573791504,\n  2.2761929035186768,\n  -1.6226210594177246,\n  -0.1626325398683548,\n  0.2042643278837204,\n  7.610365867614746,\n  2.6038875579833984,\n  -1.0492931604385376,\n  0.7676246166229248,\n  0.5359351634979248,\n  -1.377429723739624,\n  0.0445498526096344,\n  3.6435866355895996,\n  -0.5998186469078064,\n  -0.7449776530265808,\n  2.172153949737549,\n  1.3124476671218872,\n  0.7158203125,\n  -0.4463050365447998,\n  -1.6043119430541992,\n  1.2876209020614624,\n  1.6522972583770752,\n  3.427780866622925,\n  0.1358410120010376,\n  0.4272344708442688,\n  2.500582695007324,\n  -4.521251678466797,\n  2.9197185039520264,\n  -1.3598865270614624,\n  1.4214967489242554,\n  2.7840402126312256,\n  0.2907366156578064,\n  0.2389032244682312,\n  -1.65239679813385,\n  -0.8215215802192688,\n  0.4680524468421936,\n  2.100597620010376,\n  -0.1601388156414032,\n  -1.0391554832458496,\n  -0.56024169921875,\n  -1.7695777416229248,\n  0.3219052255153656,\n  -0.694707989692688,\n  1.4678781032562256,\n  -1.1188383102416992,\n  0.7611548900604248,\n  1.8921130895614624,\n  2.6749558448791504,\n  -0.5331333875656128,\n  0.6694568395614624,\n  -2.425804615020752,\n  1.5881929397583008,\n  -3.4325125217437744,\n  2.776012659072876,\n  0.5801566243171692,\n  1.1734095811843872,\n  -5.680152416229248,\n  1.4156726598739624,\n  0.6876395344734192,\n  0.9551537036895752,\n  -0.57275390625,\n  6.200148582458496,\n  -1.947265625,\n  -0.2166108638048172,\n  3.149123430252075,\n  -0.2552897036075592,\n  -0.5888904333114624,\n  -3.13716197013855,\n  2.032738208770752,\n  -0.3824346661567688,\n  1.2699148654937744,\n  2.1695499420166016,\n  4.195591449737549,\n  -2.2122859954833984,\n  0.6997302770614624,\n  2.139293909072876,\n  3.308826208114624,\n  2.824951171875,\n  0.0320797860622406,\n  -2.3572068214416504,\n  -0.404360830783844,\n  0.9745163917541504,\n  -0.8706287145614624,\n  1.1544595956802368,\n  -0.5182408094406128,\n  1.8154064416885376,\n  -1.9462076425552368,\n  1.1130021810531616,\n  -2.9254558086395264,\n  -0.3325674831867218,\n  -1.0437593460083008,\n  0.4762369692325592,\n  2.959263324737549,\n  -0.8284505009651184,\n  1.3094888925552368,\n  -0.9840611219406128,\n  0.8870842456817627,\n  -1.2349330186843872,\n  2.5071847438812256,\n  -0.483154296875,\n  -1.2168550491333008,\n  -1.4885835647583008,\n  2.6382534503936768,\n  -2.9230144023895264,\n  -1.6938709020614624,\n  -1.3670480251312256,\n  1.936376690864563,\n  0.2628348171710968,\n  -3.179978132247925,\n  0.2735770046710968,\n  0.6927722692489624,\n  -1.0469447374343872,\n  1.0132650136947632,\n  -3.9332101345062256,\n  -1.746832013130188,\n  -0.6730608344078064,\n  -0.6274791955947876,\n  0.3337344229221344,\n  -6.156435966491699,\n  2.1227214336395264,\n  1.0646158456802368,\n  0.7325439453125,\n  -4.351678848266602,\n  -0.5874953269958496,\n  2.600074291229248,\n  2.5760560035705566,\n  0.7391764521598816,\n  -1.6261857748031616,\n  2.724093437194824,\n  1.7208658456802368,\n  -0.6266276240348816,\n  1.2847609519958496,\n  -0.2658168375492096,\n  0.963556170463562,\n  -0.138625368475914,\n  0.5877220630645752,\n  -0.6460193395614624,\n  -2.3911540508270264,\n  1.6449962854385376,\n  -3.0143113136291504,\n  2.140834331512451,\n  1.9634791612625122,\n  2.003882884979248,\n  -2.174862861633301,\n  0.6682593822479248,\n  1.0175374746322632,\n  0.39618247747421265,\n  0.7739744782447815,\n  -4.232607841491699,\n  4.4261298179626465,\n  -1.961542010307312,\n  -0.7140880823135376,\n  0.8215215802192688,\n  0.2941531240940094,\n  -2.100074291229248,\n  0.1902204304933548,\n  -2.3553292751312256,\n  -0.3203938901424408,\n  1.6728980541229248,\n  -1.9430629014968872,\n  -7.431268692016602,\n  -0.5128319263458252,\n  -0.3350365161895752,\n  2.0741488933563232,\n  -2.661574602127075,\n  2.0596866607666016,\n  -0.7309802770614624,\n  -1.3079543113708496,\n  1.473376989364624,\n  0.0170447938144207,\n  -1.2472069263458252,\n  -1.6899181604385376,\n  -0.8154413104057312,\n  0.125093013048172,\n  3.4409992694854736,\n  -3.810081958770752,\n  3.7676944732666016,\n  1.5242745876312256,\n  0.4404761791229248,\n  -1.9233630895614624,\n  1.8558756113052368,\n  2.502232074737549,\n  0.2059965580701828,\n  0.4861072301864624,\n  -3.5673828125,\n  -0.2292596697807312,\n  2.410057544708252,\n  -2.4907925128936768,\n  3.824108362197876,\n  -2.004929304122925,\n  1.5395700931549072,\n  -0.6716773509979248,\n  -1.1279529333114624,\n  -5.1095147132873535,\n  -2.131091833114624,\n  0.2019113302230835,\n  -1.4784226417541504,\n  -1.5894252061843872,\n  -2.1392996311187744,\n  0.303617924451828,\n  1.764684796333313,\n  -0.3447323739528656,\n  -0.9539620280265808,\n  0.1507510244846344,\n  -2.705868721008301,\n  0.0446893610060215,\n  1.603771448135376,\n  -1.620000958442688,\n  4.022030830383301,\n  -1.404979944229126,\n  -0.4238629937171936,\n  1.2903165817260742,\n  5.298336982727051,\n  -0.6750372052192688,\n  -0.0909133180975914,\n  1.4788411855697632,\n  -1.581775426864624,\n  3.3702800273895264,\n  -1.4427664279937744,\n  0.5989583134651184,\n  -1.2372814416885376,\n  -0.7825114130973816,\n  -2.2649972438812256,\n  0.7937825322151184,\n  2.7926199436187744,\n  -2.3978214263916016,\n  0.8983677625656128,\n  -0.3314441442489624,\n  0.4290829598903656,\n  0.17401304841041565,\n  -0.1948939710855484,\n  0.5611979365348816,\n  2.264296770095825,\n  1.0717424154281616,\n  -0.9254906177520752,\n  4.426641464233398,\n  -2.7664620876312256,\n  1.3456101417541504,\n  -0.4431668221950531,\n  -1.7853189706802368,\n  -1.01318359375,\n  -2.083786725997925,\n  -3.689267873764038,\n  2.192470073699951,\n  -0.7495945692062378,\n  1.0066957473754883,\n  -2.8359172344207764,\n  -1.2920503616333008,\n  -0.3676292896270752,\n  2.6299991607666016,\n  -0.9516485333442688,\n  -2.8772029876708984,\n  -1.0737100839614868,\n  -2.4349887371063232,\n  -1.6933128833770752,\n  -2.4494106769561768,\n  -0.4496525228023529,\n  -0.1119559183716774,\n  -0.0562686026096344,\n  2.0399227142333984,\n  -4.5753350257873535,\n  1.0193103551864624,\n  5.581798553466797,\n  1.9683314561843872,\n  1.5712251663208008,\n  0.8992687463760376,\n  0.2774309515953064,\n  1.564208984375,\n  4.587774276733398,\n  1.3600754737854004,\n  2.0716495513916016,\n  -1.819707989692688,\n  0.965021014213562,\n  -2.498081684112549,\n  -0.112647645175457,\n  0.6678059697151184,\n  -3.3524231910705566,\n  -3.165550708770752,\n  0.3734392523765564,\n  -0.7814825177192688,\n  -0.0694056898355484,\n  3.294201135635376,\n  2.5527865886688232,\n  2.3942348957061768,\n  -2.613257884979248,\n  0.6270911693572998,\n  -2.945824146270752,\n  -1.3052396774291992,\n  2.2906668186187744,\n  0.539434552192688,\n  3.504775285720825,\n  -2.208969831466675,\n  3.283156633377075,\n  -1.7285737991333008,\n  -0.3470284640789032,\n  -2.476576328277588,\n  1.725824236869812,\n  -0.0244285948574543,\n  2.9087843894958496,\n  -0.4091099202632904,\n  -0.6397879719734192,\n  0.017578125,\n  -5.113071918487549,\n  -0.0006441388977691531,\n  1.1213407516479492,\n  0.5453810691833496,\n  2.983584403991699,\n  0.8164411187171936,\n  -2.3067104816436768,\n  -2.0208449363708496,\n  -1.7847667932510376,\n  -1.767217755317688,\n  -3.404517650604248,\n  -0.9853907823562622,\n  -0.603945791721344,\n  1.38671875,\n  -3.9293620586395264,\n  -0.2946893572807312,\n  0.1689220666885376,\n  2.4647507667541504,\n  -1.72265625,\n  -1.6730375289916992,\n  1.1087937355041504,\n  0.9513012170791626,\n  -2.702334403991699,\n  -2.3695125579833984,\n  -0.617620587348938,\n  -0.873174786567688,\n  -2.445835590362549,\n  0.2038952112197876,\n  -2.253394603729248,\n  -0.2544642984867096,\n  0.581915020942688,\n  1.0807058811187744,\n  -3.770042896270752,\n  -2.6415085792541504,\n  1.1408313512802124,\n  4.359444618225098,\n  -1.2780529260635376,\n  3.5825893878936768,\n  0.4435570240020752,\n  -4.870057582855225,\n  -1.1896042823791504,\n  -7.316127300262451,\n  -0.3919757604598999,\n  0.5642787218093872,\n  0.8771623969078064,\n  -0.2250279039144516,\n  -2.01936411857605,\n  0.1082741841673851,\n  0.5868327021598816,\n  -1.2485060691833496,\n  3.4175734519958496,\n  1.1422525644302368,\n  4.126092910766602,\n  0.8914387822151184,\n  -0.982183575630188,\n  0.2799217700958252,\n  2.3126163482666016,\n  -0.9817185401916504,\n  0.7435041069984436,\n  0.386721670627594,\n  -1.4867873191833496,\n  0.7260044813156128,\n  2.5653598308563232,\n  -2.8674519062042236,\n  1.50244140625,\n  0.649658203125,\n  1.7829939126968384,\n  1.232549786567688,\n  2.7852261066436768,\n  -3.4414761066436768,\n  -1.9409761428833008,\n  1.193353533744812,\n  -2.1485073566436768,\n  -0.8072131872177124,\n  -0.3246518075466156,\n  0.573832094669342,\n  0.1882491409778595,\n  -0.5357375144958496,\n  1.1122581958770752,\n  -4.996698379516602,\n  0.4966982901096344,\n  -0.3577386736869812,\n  -2.3212890625,\n  0.3770664632320404,\n  -0.2654201090335846,\n  2.119838237762451,\n  -0.6930396556854248,\n  0.0501534603536129,\n  -2.116955041885376,\n  -0.2808169424533844,\n  0.3714192807674408,\n  -2.325230121612549,\n  0.613165020942688,\n  2.9769809246063232,\n  1.8441801071166992,\n  1.1688523292541504,\n  1.3661818504333496,\n  -0.6050734519958496,\n  -1.749261736869812,\n  0.4093235433101654,\n  3.175723075866699,\n  -0.574276864528656,\n  1.308477520942688,\n  -0.2646542489528656,\n  -2.4543209075927734,\n  -2.337844133377075,\n  0.1739908903837204,\n  -0.6459496021270752,\n  1.2368396520614624,\n  -1.8353794813156128,\n  -5.620768070220947,\n  -0.1434151828289032,\n  0.2701009213924408,\n  -0.5997794270515442,\n  0.0848098024725914,\n  1.6952993869781494,\n  -1.9204334020614624,\n  -4.604619979858398,\n  -1.5714590549468994,\n  0.7144484519958496,\n  -6.0400390625,\n  0.7081705927848816,\n  0.2726236879825592,\n  -5.18710470199585,\n  1.025390625,\n  1.9758650064468384,\n  -0.6129673719406128,\n  1.1400728225708008,\n  1.7468843460083008,\n  1.5866990089416504,\n  -1.4861189126968384,\n  0.0676385760307312,\n  -4.82177734375,\n  2.540503978729248,\n  -0.5536063313484192,\n  1.254052996635437,\n  -1.6521170139312744,\n  0.5486885905265808,\n  3.589378833770752,\n  -0.1458740234375,\n  -1.349737286567688,\n  -1.9735398292541504,\n  1.8886195421218872,\n  2.6725261211395264,\n  2.304234027862549,\n  -1.418933629989624,\n  3.337498188018799,\n  1.4046224355697632,\n  -2.416527271270752,\n  -0.9091564416885376,\n  -2.326218366622925,\n  -1.8020833730697632,\n  1.9445103406906128,\n  1.1670386791229248,\n  2.0166945457458496,\n  0.9869559407234192,\n  -2.314011335372925,\n  -1.0860072374343872,\n  -2.1548781394958496,\n  3.8226609230041504,\n  0.9254949688911438,\n  4.414283275604248,\n  -4.803725242614746,\n  -1.3631185293197632,\n  0.6395089030265808,\n  2.9791202545166016,\n  -0.4217413067817688,\n  -0.814813494682312,\n  -0.4398716390132904,\n  -0.295503169298172,\n  0.0736607164144516,\n  0.8285784125328064,\n  -2.102527379989624,\n  0.6297374963760376,\n  0.0366908498108387,\n  -1.5638010501861572,\n  3.4719936847686768,\n  -1.7240629196166992,\n  0.0377662293612957,\n  -0.4979778528213501,\n  -0.1251278817653656,\n  -1.8079659938812256,\n  -12.437267303466797,\n  -1.8520101308822632,\n  -1.1695847511291504,\n  0.1619698703289032,\n  5.384091377258301,\n  2.6119792461395264,\n  1.634533166885376,\n  -4.055780410766602,\n  0.5575764775276184,\n  -2.854712963104248,\n  -1.7881324291229248,\n  2.938685894012451,\n  -1.9843285083770752,\n  -1.0273902416229248,\n  1.8616304397583008,\n  2.7086589336395264,\n  1.1250232458114624,\n  -0.2614920437335968,\n  1.009533166885376,\n  -1.9175996780395508,\n  5.550984859466553,\n  0.4597909152507782,\n  -2.4766671657562256,\n  0.1085699200630188,\n  1.1852678060531616,\n  0.0624941885471344,\n  -0.0527925044298172,\n  4.021763324737549,\n  -2.433074951171875,\n  -1.0374349355697632,\n  0.0166945680975914,\n  -2.407668352127075,\n  -5.687221050262451,\n  -0.695498526096344,\n  -1.5618140697479248,\n  2.080874443054199,\n  0.3917018473148346,\n  -0.5923084020614624,\n  -1.371576189994812,\n  3.0956101417541504,\n  1.3908400535583496,\n  -1.0246145725250244,\n  1.7369558811187744,\n  0.0242745541036129,\n  -3.378720283508301,\n  2.068824291229248,\n  0.345796138048172,\n  1.3243001699447632,\n  -0.7832147479057312,\n  0.8096516728401184,\n  2.9429843425750732,\n  2.423549175262451,\n  2.1359806060791016,\n  -2.6834309101104736,\n  -2.655872106552124,\n  1.8125406503677368,\n  0.946771502494812,\n  2.9212238788604736,\n  -0.9344075322151184,\n  1.5607011318206787,\n  -0.8496209979057312,\n  -0.903994619846344,\n  2.9551711082458496,\n  1.5846353769302368,\n  -0.4791608452796936,\n  1.2241443395614624,\n  2.535109758377075,\n  -1.5509382486343384,\n  -0.780267596244812,\n  1.8514695167541504,\n  0.5832200050354004,\n  0.7580391764640808,\n  -1.6214017868041992,\n  -1.4193115234375,\n  0.0974469855427742,\n  0.0855306014418602,\n  5.541341304779053,\n  -2.587146520614624,\n  1.6862328052520752,\n  -2.5028367042541504,\n  -0.5991966724395752,\n  0.8192952275276184,\n  -0.349853515625,\n  -2.114795446395874,\n  1.2370213270187378,\n  3.396740198135376,\n  0.1362057626247406,\n  -1.0831007957458496,\n  2.1080148220062256,\n  2.1896042823791504,\n  -0.2666480541229248,\n  0.4311058521270752,\n  2.8814406394958496,\n  -1.3037865161895752,\n  0.3792957067489624,\n  -2.4879441261291504,\n  -0.2936939001083374,\n  -1.2824357748031616,\n  -1.337518572807312,\n  -0.2256673127412796,\n  -3.3409597873687744,\n  1.585693359375,\n  1.284845232963562,\n  -5.522135257720947,\n  0.02978515625,\n  -0.6273484230041504,\n  2.699265241622925,\n  4.042922019958496,\n  0.0606980100274086,\n  0.9105486273765564,\n  4.331426620483398,\n  -1.262951135635376,\n  -0.1080206036567688,\n  2.442429304122925,\n  -3.885044574737549,\n  -2.4437081813812256,\n  3.9873454570770264,\n  1.7118326425552368,\n  -1.9938395023345947,\n  0.00914946012198925,\n  1.6307722330093384,\n  -1.8759765625,\n  2.041095495223999,\n  -2.2845051288604736,\n  0.6250424981117249,\n  2.0408761501312256,\n  1.0697892904281616,\n  0.3761160671710968,\n  0.9276344776153564,\n  -0.5895647406578064,\n  0.6281622052192688,\n  -2.8109188079833984,\n  3.073552370071411,\n  2.390404224395752,\n  -0.842706561088562,\n  -0.1648530513048172,\n  -2.168898820877075,\n  2.064478635787964,\n  -1.220470666885376,\n  -0.5130440592765808,\n  0.4934198260307312,\n  -1.499639630317688,\n  0.7014930248260498,\n  -0.7291434407234192,\n  -3.102027416229248,\n  1.3477376699447632,\n  -2.389125347137451,\n  0.8936476707458496,\n  0.9664481282234192,\n  -2.1259765625,\n  -0.0663423091173172,\n  0.5794532299041748,\n  -1.4837181568145752,\n  4.21182107925415,\n  -0.02881440706551075,\n  -2.174778461456299,\n  2.3885207176208496,\n  -5.554129600524902,\n  -0.0653250589966774,\n  0.6246744990348816,\n  -4.2728095054626465,\n  0.2262137234210968,\n  -1.6327486038208008,\n  -0.6847156286239624,\n  -4.692685127258301,\n  -2.5738582611083984,\n  2.9593098163604736,\n  2.182849645614624,\n  -5.634486675262451,\n  -3.5050456523895264,\n  -0.2388974130153656,\n  0.8178827166557312,\n  -1.983831524848938,\n  -0.792962908744812,\n  -0.9559617042541504,\n  2.3511672019958496,\n  2.329287528991699,\n  -0.2472592294216156,\n  -2.310561418533325,\n  -4.843099117279053,\n  0.3601800799369812,\n  2.8207077980041504,\n  2.512485980987549,\n  1.778692364692688,\n  -0.7548363208770752,\n  3.717819929122925,\n  -0.8799757957458496,\n  -2.6719272136688232,\n  5.041573524475098,\n  -1.5936795473098755,\n  -1.6089332103729248,\n  3.9659597873687744,\n  0.647333025932312,\n  -2.306687116622925,\n  1.893926739692688,\n  -0.192230224609375,\n  1.4540181159973145,\n  1.929931640625,\n  -2.1776180267333984,\n  2.3721866607666016,\n  -0.328031986951828,\n  0.264590322971344,\n  -1.0300874710083008,\n  1.340795636177063,\n  4.574869632720947,\n  -3.3363211154937744,\n  1.920809030532837,\n  2.411830425262451,\n  -0.33847081661224365,\n  -0.8638160228729248,\n  -0.9912552833557129,\n  -3.400344133377075,\n  2.05322265625,\n  -2.6805593967437744,\n  -2.466773509979248,\n  -1.4420398473739624,\n  -1.106433629989624,\n  -0.8407244086265564,\n  -0.1795712411403656,\n  1.3751394748687744,\n  4.941859722137451,\n  1.392042636871338,\n  0.6288270354270935,\n  0.6298421025276184,\n  0.6600908637046814,\n  -2.635463237762451,\n  ...],\n [-2.1575520038604736,\n  2.618605852127075,\n  0.1199544295668602,\n  6.2138671875,\n  -6.1587815284729,\n  -0.0213332399725914,\n  -1.365838885307312,\n  2.154482841491699,\n  0.474609375,\n  -1.295293927192688,\n  -7.636997699737549,\n  2.125046491622925,\n  0.9647507667541504,\n  2.6602725982666016,\n  -0.3217104971408844,\n  1.6605747938156128,\n  -3.1678175926208496,\n  4.776181221008301,\n  0.3368326723575592,\n  1.8876953125,\n  5.066615581512451,\n  2.100539445877075,\n  -1.1231980323791504,\n  1.8080822229385376,\n  -1.007806658744812,\n  0.0441080741584301,\n  0.4431210458278656,\n  -6.269345283508301,\n  -1.216052770614624,\n  0.2050287127494812,\n  0.742709219455719,\n  0.2626953125,\n  -4.4794921875,\n  -2.143787145614624,\n  1.3126627206802368,\n  0.4435163140296936,\n  -2.482142925262451,\n  -0.9412638545036316,\n  -3.113269567489624,\n  2.485305070877075,\n  0.3493187427520752,\n  -1.4430105686187744,\n  -4.102353096008301,\n  -0.5039992332458496,\n  2.8677456378936768,\n  -2.679466724395752,\n  -3.705368757247925,\n  0.855218768119812,\n  2.6485073566436768,\n  -2.384608745574951,\n  1.4184250831604004,\n  8.917038917541504,\n  -0.0524321049451828,\n  1.2620035409927368,\n  3.979306221008301,\n  -4.189918041229248,\n  -2.009068012237549,\n  1.3980858325958252,\n  2.336047887802124,\n  -2.661388635635376,\n  -3.114536762237549,\n  -1.2537550926208496,\n  -4.8550848960876465,\n  1.4970703125,\n  -2.914260149002075,\n  -2.2188663482666016,\n  0.2810104787349701,\n  0.568603515625,\n  0.327055424451828,\n  -0.8974841833114624,\n  -0.4380580484867096,\n  -0.7052990198135376,\n  4.596517086029053,\n  1.675909161567688,\n  -2.8179757595062256,\n  -2.5696964263916016,\n  1.6750138998031616,\n  -0.3368268609046936,\n  1.8383692502975464,\n  0.02518717385828495,\n  -2.3325252532958984,\n  -2.470889091491699,\n  0.722842276096344,\n  -4.450613975524902,\n  1.5575242042541504,\n  2.033458948135376,\n  -1.7189592123031616,\n  0.8356584906578064,\n  2.580554723739624,\n  2.858119487762451,\n  4.930780410766602,\n  -1.0470377206802368,\n  -1.0770902633666992,\n  -2.8167898654937744,\n  1.87353515625,\n  3.3341586589813232,\n  0.4313092827796936,\n  -0.7433733344078064,\n  -0.7255162000656128,\n  1.5633922815322876,\n  -2.993140697479248,\n  2.321723461151123,\n  -3.049083948135376,\n  -0.7643316388130188,\n  1.5258556604385376,\n  0.4922339916229248,\n  1.4034336805343628,\n  0.2252778559923172,\n  -1.2587716579437256,\n  -1.5981154441833496,\n  -1.7450474500656128,\n  1.7405831813812256,\n  0.040504090487957,\n  -3.3649089336395264,\n  -2.1138393878936768,\n  -0.714300274848938,\n  3.246396064758301,\n  2.128574848175049,\n  0.5879836082458496,\n  -3.1300456523895264,\n  -0.5177176594734192,\n  -1.898077130317688,\n  -2.946800708770752,\n  2.0579776763916016,\n  0.1586100310087204,\n  -1.7922828197479248,\n  2.133561134338379,\n  -4.414928436279297,\n  3.0135324001312256,\n  1.3477492332458496,\n  3.1000046730041504,\n  -1.2494302988052368,\n  0.5357280969619751,\n  2.276320695877075,\n  2.031947612762451,\n  5.6939697265625,\n  1.1708635091781616,\n  3.838134765625,\n  2.076195240020752,\n  2.5683913230895996,\n  -0.9459751844406128,\n  4.448741912841797,\n  -1.6910574436187744,\n  -0.8399861454963684,\n  0.122023805975914,\n  -4.010788917541504,\n  -3.037376880645752,\n  0.0564255490899086,\n  -6.118396759033203,\n  0.6229073405265808,\n  0.0325985848903656,\n  1.2030057907104492,\n  3.138648509979248,\n  -5.093947410583496,\n  -0.2521623969078064,\n  4.05322265625,\n  -3.676205635070801,\n  3.030226945877075,\n  1.0584383010864258,\n  -1.5202810764312744,\n  2.101818323135376,\n  2.924107074737549,\n  3.1755807399749756,\n  -0.940249502658844,\n  1.105108380317688,\n  -2.903724193572998,\n  0.6800711750984192,\n  0.0693998783826828,\n  -1.3550502061843872,\n  -0.1544857919216156,\n  -0.9627619981765747,\n  -1.3021153211593628,\n  -0.094191774725914,\n  -4.1197686195373535,\n  -0.548153817653656,\n  2.437941789627075,\n  -0.4136439859867096,\n  -4.409993648529053,\n  1.1545816659927368,\n  -0.7652297019958496,\n  -1.428338885307312,\n  -2.7738735675811768,\n  5.621884346008301,\n  -4.144507884979248,\n  -5.515253067016602,\n  -0.1356026828289032,\n  1.7340726852416992,\n  0.4997093677520752,\n  -0.8184523582458496,\n  -1.4206019639968872,\n  1.309026837348938,\n  -2.126209020614624,\n  1.2385820150375366,\n  2.027977466583252,\n  1.4137834310531616,\n  2.5892772674560547,\n  -0.6414620280265808,\n  2.365719795227051,\n  -0.3570498526096344,\n  3.8824636936187744,\n  0.8414829969406128,\n  0.599237322807312,\n  1.8714193105697632,\n  -1.5473705530166626,\n  -0.6710423231124878,\n  -3.7456111907958984,\n  -3.568894147872925,\n  -1.5397818088531494,\n  3.030139684677124,\n  0.6116710901260376,\n  0.8471766710281372,\n  -0.7744024395942688,\n  -0.926996111869812,\n  -1.471203088760376,\n  0.333403080701828,\n  -4.60732889175415,\n  1.3628162145614624,\n  1.7662062644958496,\n  2.2437686920166016,\n  0.5121837854385376,\n  2.034412145614624,\n  -2.651611328125,\n  1.1658064126968384,\n  -0.6450079083442688,\n  0.225492924451828,\n  -1.749255895614624,\n  -0.3932233452796936,\n  -6.902018070220947,\n  3.2049269676208496,\n  -0.225830078125,\n  1.9382760524749756,\n  -1.6443917751312256,\n  2.7977585792541504,\n  0.483305424451828,\n  -1.6654961109161377,\n  -0.2568824291229248,\n  -1.7923758029937744,\n  -2.383091449737549,\n  -3.922693967819214,\n  0.1985212117433548,\n  0.7301897406578064,\n  1.7781226634979248,\n  1.5334705114364624,\n  1.853570818901062,\n  0.0484793521463871,\n  1.7284691333770752,\n  -2.4452195167541504,\n  -1.6814488172531128,\n  -1.5548269748687744,\n  1.0479212999343872,\n  -2.1229248046875,\n  -3.2613468170166016,\n  3.2237839698791504,\n  -0.5536644458770752,\n  -0.42431640625,\n  -2.887974262237549,\n  1.251581072807312,\n  -0.959295392036438,\n  -2.391543388366699,\n  0.49451154470443726,\n  2.2195754051208496,\n  -2.5575358867645264,\n  2.0283901691436768,\n  2.167759418487549,\n  -1.3134765625,\n  -2.541213274002075,\n  0.955264151096344,\n  1.5764974355697632,\n  -12.573288917541504,\n  -1.9500441551208496,\n  1.4274320602416992,\n  0.384031742811203,\n  2.9422781467437744,\n  -3.5138347148895264,\n  2.512974262237549,\n  -5.812174320220947,\n  4.491815567016602,\n  -0.2118094265460968,\n  3.762671947479248,\n  -0.0679408460855484,\n  -0.486025869846344,\n  1.6782923936843872,\n  0.8816847801208496,\n  0.5760352611541748,\n  -1.882440447807312,\n  -0.9389241337776184,\n  2.837355852127075,\n  3.156123638153076,\n  -0.0341796875,\n  -0.8283342719078064,\n  3.837177038192749,\n  4.877976417541504,\n  4.7274346351623535,\n  -3.418666362762451,\n  0.9503348469734192,\n  2.2074642181396484,\n  5.039295196533203,\n  -1.249255895614624,\n  2.4933035373687744,\n  1.6226400136947632,\n  1.0807291269302368,\n  -1.7317476272583008,\n  3.9486868381500244,\n  -2.515903949737549,\n  4.5283203125,\n  2.483677387237549,\n  -1.7628812789916992,\n  1.3401925563812256,\n  1.6261277198791504,\n  -1.5522123575210571,\n  1.24658203125,\n  4.123023509979248,\n  0.5718005895614624,\n  -3.433837890625,\n  -0.943731427192688,\n  -0.0832272469997406,\n  -4.644484519958496,\n  0.3103201687335968,\n  -3.479933977127075,\n  2.9720866680145264,\n  3.7490408420562744,\n  -0.4757080078125,\n  3.141880512237549,\n  -0.8358445167541504,\n  -1.1015625,\n  0.0364583320915699,\n  -2.6979050636291504,\n  -0.0997866690158844,\n  -1.897937536239624,\n  -1.7798548936843872,\n  1.143298864364624,\n  0.8896251916885376,\n  -0.39192891120910645,\n  2.771949291229248,\n  -0.839727520942688,\n  -1.4672473669052124,\n  -1.669201135635376,\n  0.9039597511291504,\n  -0.3589564859867096,\n  -1.4757603406906128,\n  -1.417840838432312,\n  -1.8171154260635376,\n  -1.9727027416229248,\n  1.7623697519302368,\n  -0.6150687336921692,\n  1.2088063955307007,\n  0.5004650354385376,\n  1.6305280923843384,\n  -1.0734281539916992,\n  1.150506854057312,\n  -3.6482863426208496,\n  4.638206958770752,\n  -1.6602609157562256,\n  0.7373976707458496,\n  4.922804832458496,\n  3.9278972148895264,\n  -2.656029224395752,\n  -0.1832348108291626,\n  -1.0750732421875,\n  4.468430519104004,\n  0.597906231880188,\n  -0.1489025354385376,\n  -0.4985889196395874,\n  0.5002790093421936,\n  -0.8250557780265808,\n  0.8684779405593872,\n  0.471682608127594,\n  1.3330543041229248,\n  0.493899405002594,\n  -2.118088483810425,\n  2.703392505645752,\n  -3.544666051864624,\n  -1.073962926864624,\n  -1.9854736328125,\n  1.2251936197280884,\n  0.1276971697807312,\n  -2.971865653991699,\n  -0.1149887815117836,\n  0.475678950548172,\n  -0.7892020344734192,\n  0.7561151385307312,\n  1.5380394458770752,\n  3.9047152996063232,\n  -2.026843786239624,\n  3.4988605976104736,\n  0.2306315153837204,\n  3.3424181938171387,\n  -0.2264636754989624,\n  -0.8487025499343872,\n  -1.325342059135437,\n  0.5090840458869934,\n  -2.9836223125457764,\n  1.0463169813156128,\n  -1.1229538917541504,\n  1.7341148853302002,\n  2.337913990020752,\n  2.9739277362823486,\n  1.5266523361206055,\n  -1.6695963144302368,\n  2.1935946941375732,\n  0.713018536567688,\n  -2.8561389446258545,\n  -0.1640857458114624,\n  -2.2691359519958496,\n  -2.8074777126312256,\n  -0.7444661259651184,\n  -3.312209367752075,\n  -2.4604485034942627,\n  -4.43359375,\n  0.5177461504936218,\n  -1.303943395614624,\n  0.8539109230041504,\n  0.4428013265132904,\n  -1.562383770942688,\n  0.325590580701828,\n  2.6998233795166016,\n  -3.7557199001312256,\n  -1.5011625289916992,\n  2.0412654876708984,\n  4.7022881507873535,\n  -0.5534784197807312,\n  8.701823234558105,\n  -1.7649564743041992,\n  0.3645135760307312,\n  -5.7317938804626465,\n  -0.0636625736951828,\n  1.889171838760376,\n  -2.185825824737549,\n  -0.5950055718421936,\n  -1.574188232421875,\n  -0.6176060438156128,\n  -2.154482841491699,\n  2.748721122741699,\n  -1.3947601318359375,\n  2.1497628688812256,\n  0.601498544216156,\n  3.8257534503936768,\n  -0.843874990940094,\n  -1.8834635019302368,\n  1.8161039352416992,\n  -1.2065894603729248,\n  -0.7280796766281128,\n  3.417294502258301,\n  -3.6412179470062256,\n  1.083856463432312,\n  0.5642206072807312,\n  1.4366048574447632,\n  -0.9813755750656128,\n  -0.3464704155921936,\n  3.621971607208252,\n  0.7313057780265808,\n  -4.833109378814697,\n  -3.0928025245666504,\n  1.1376473903656006,\n  -3.2149600982666016,\n  -0.155302494764328,\n  1.03857421875,\n  -0.887265145778656,\n  -0.1368815153837204,\n  0.3902544379234314,\n  0.9181693196296692,\n  -1.9414992332458496,\n  2.6797428131103516,\n  -0.5623895525932312,\n  4.106201171875,\n  -2.7222957611083984,\n  -0.39013671875,\n  3.8604910373687744,\n  1.839471697807312,\n  -1.1877412796020508,\n  -2.141880512237549,\n  -0.1052827388048172,\n  -1.0735619068145752,\n  2.719528913497925,\n  -1.714239239692688,\n  -3.145350933074951,\n  -3.819812536239624,\n  -1.3367832899093628,\n  0.405854731798172,\n  -3.111142158508301,\n  -4.504231929779053,\n  -1.1325334310531616,\n  -4.383138179779053,\n  -5.9140625,\n  -5.0025458335876465,\n  0.288998544216156,\n  -2.3006417751312256,\n  1.0837984085083008,\n  -2.2879230976104736,\n  1.4615739583969116,\n  0.8261370062828064,\n  1.0453345775604248,\n  -2.6843268871307373,\n  0.6130138635635376,\n  -1.2671130895614624,\n  -0.3662807047367096,\n  3.837844133377075,\n  -1.8938806056976318,\n  0.716494619846344,\n  -0.1028762087225914,\n  0.4639369547367096,\n  2.7860515117645264,\n  2.542992115020752,\n  -0.7826392650604248,\n  3.6927082538604736,\n  -1.5215308666229248,\n  -5.055547714233398,\n  -1.0785435438156128,\n  0.5412757396697998,\n  -0.3303106427192688,\n  -2.4002859592437744,\n  -0.6172572374343872,\n  -2.785301685333252,\n  -2.2486863136291504,\n  0.8557623028755188,\n  -0.759881854057312,\n  0.888067364692688,\n  -3.9259207248687744,\n  0.5824730396270752,\n  1.8380403518676758,\n  3.409836530685425,\n  0.619198739528656,\n  -1.795154333114624,\n  0.953125,\n  -0.2525983452796936,\n  1.387439489364624,\n  -1.2462012767791748,\n  0.9922921061515808,\n  0.7924048900604248,\n  1.690673828125,\n  -1.580810546875,\n  -4.6605048179626465,\n  -4.473586082458496,\n  1.2434837818145752,\n  0.3005138635635376,\n  3.021740198135376,\n  -0.9494861364364624,\n  2.084426164627075,\n  -0.97998046875,\n  0.3878348171710968,\n  0.479399174451828,\n  2.6162893772125244,\n  -2.0206735134124756,\n  0.5972609519958496,\n  -1.537225604057312,\n  -1.5623372793197632,\n  -1.3797433376312256,\n  1.2449079751968384,\n  -1.6905226707458496,\n  0.01560174860060215,\n  -0.6975446343421936,\n  -0.5888439416885376,\n  0.882021963596344,\n  -0.9608910083770752,\n  2.6320102214813232,\n  0.9690348505973816,\n  -1.6296619176864624,\n  -0.9924548864364624,\n  3.735095739364624,\n  1.0918550491333008,\n  -0.5355515480041504,\n  -1.2443441152572632,\n  2.446056604385376,\n  -2.654087543487549,\n  2.3359897136688232,\n  -1.0528157949447632,\n  1.1652482748031616,\n  -0.4394589364528656,\n  2.0926105976104736,\n  0.6371024250984192,\n  -0.1886858195066452,\n  3.3658621311187744,\n  -2.6918423175811768,\n  0.5203741192817688,\n  -3.3026180267333984,\n  4.4227118492126465,\n  -1.2669386863708496,\n  1.1703230142593384,\n  -1.3232654333114624,\n  -0.9640764594078064,\n  1.131072998046875,\n  0.2461140900850296,\n  1.2292757034301758,\n  2.6741652488708496,\n  -1.6278308629989624,\n  -0.4600597620010376,\n  -0.3811500072479248,\n  -0.7230747938156128,\n  2.804873466491699,\n  6.906528949737549,\n  1.4979248046875,\n  2.220424175262451,\n  0.6223028302192688,\n  0.00037644023541361094,\n  1.5150902271270752,\n  1.2871994972229004,\n  -1.0626307725906372,\n  -3.291259765625,\n  -1.3857886791229248,\n  0.2513950765132904,\n  1.3041585683822632,\n  2.185360908508301,\n  -4.820184707641602,\n  0.2952779233455658,\n  3.0146484375,\n  -0.6866164207458496,\n  0.3150227963924408,\n  -0.3048037588596344,\n  -5.077822685241699,\n  -1.6523205041885376,\n  1.627697229385376,\n  -1.9784458875656128,\n  1.840459942817688,\n  2.7246952056884766,\n  4.74521017074585,\n  0.7779017686843872,\n  -0.009097144939005375,\n  -5.745070457458496,\n  -3.937941789627075,\n  -1.7271554470062256,\n  -0.8390067219734192,\n  -3.472365617752075,\n  -0.8593866229057312,\n  5.322591304779053,\n  -1.3933687210083008,\n  -2.417038679122925,\n  1.1610398292541504,\n  2.8213820457458496,\n  -1.288318395614624,\n  3.324660539627075,\n  -2.068359375,\n  1.794689416885376,\n  -2.858668804168701,\n  0.5184617042541504,\n  -0.160446897149086,\n  -0.4580833911895752,\n  3.8838412761688232,\n  0.162202388048172,\n  1.329113245010376,\n  1.1822218894958496,\n  1.85546875,\n  1.7500290870666504,\n  3.008103132247925,\n  1.9814453125,\n  2.323218822479248,\n  -2.114560127258301,\n  1.3387742042541504,\n  -2.1224539279937744,\n  2.0962843894958496,\n  2.119431257247925,\n  2.66778564453125,\n  -4.295968055725098,\n  -1.1116769313812256,\n  1.4308006763458252,\n  2.0365512371063232,\n  -3.447812080383301,\n  -0.3803246021270752,\n  1.9981863498687744,\n  2.170433521270752,\n  0.178129643201828,\n  1.1889183521270752,\n  -1.502813458442688,\n  1.1996837854385376,\n  -3.5238327980041504,\n  -0.5820298194885254,\n  -1.7708042860031128,\n  -1.5492990016937256,\n  2.056698799133301,\n  0.4500848650932312,\n  4.605654716491699,\n  1.899042010307312,\n  -1.6436941623687744,\n  -3.6963589191436768,\n  -0.8909040093421936,\n  -1.0665922164916992,\n  -0.3152320384979248,\n  0.964239239692688,\n  1.5662841796875,\n  -0.6138451099395752,\n  0.4319894015789032,\n  -2.185546875,\n  1.6422990560531616,\n  0.8525855541229248,\n  -2.096493721008301,\n  0.0506301149725914,\n  3.3295199871063232,\n  5.303246021270752,\n  -1.2747163772583008,\n  0.2536737322807312,\n  -3.7567923069000244,\n  -1.6054455041885376,\n  0.2609514594078064,\n  0.3036411702632904,\n  -2.9599609375,\n  2.085751533508301,\n  3.465622663497925,\n  -3.284492015838623,\n  -4.672996997833252,\n  -0.1581333726644516,\n  -4.09512186050415,\n  2.0918898582458496,\n  0.0714053213596344,\n  1.4419177770614624,\n  -3.1630380153656006,\n  2.2113094329833984,\n  -0.2658647894859314,\n  0.8158656358718872,\n  -1.0634620189666748,\n  -0.326474130153656,\n  -3.6946613788604736,\n  0.4364231526851654,\n  0.0341796875,\n  -5.787853240966797,\n  -2.1636440753936768,\n  1.8548234701156616,\n  -2.130092144012451,\n  2.138991594314575,\n  1.8565847873687744,\n  2.0166714191436768,\n  -4.913295269012451,\n  2.3033621311187744,\n  6.894842147827148,\n  -2.337123394012451,\n  3.390320301055908,\n  -2.1746652126312256,\n  1.2012183666229248,\n  -3.724155902862549,\n  0.6716424822807312,\n  -0.9750279188156128,\n  4.046084403991699,\n  1.291925311088562,\n  -3.739048480987549,\n  -0.3130740225315094,\n  -3.5247628688812256,\n  -1.731823205947876,\n  0.170625239610672,\n  -1.8067772388458252,\n  -1.0630232095718384,\n  2.3722941875457764,\n  -0.5281807780265808,\n  -1.6630394458770752,\n  -0.2747955322265625,\n  2.0581753253936768,\n  -0.492768794298172,\n  0.2224528044462204,\n  -0.6535295844078064,\n  0.8475167155265808,\n  1.0165550708770752,\n  3.3090121746063232,\n  -1.4760509729385376,\n  -4.065150737762451,\n  -1.7865251302719116,\n  -0.6534947156906128,\n  -0.8182780146598816,\n  -3.762314558029175,\n  -0.5655226707458496,\n  -1.6252790689468384,\n  4.077474117279053,\n  -0.0632672980427742,\n  -0.1148623526096344,\n  -3.457371234893799,\n  -0.874203622341156,\n  4.401157855987549,\n  -1.6480363607406616,\n  -6.454113006591797,\n  0.9127720594406128,\n  -1.430408239364624,\n  -3.04417085647583,\n  1.374872088432312,\n  0.6846691370010376,\n  -1.3871800899505615,\n  -0.256928950548172,\n  2.507033586502075,\n  -0.1048990860581398,\n  -3.3099422454833984,\n  -1.5405970811843872,\n  -0.8469703197479248,\n  -1.8985769748687744,\n  3.1974050998687744,\n  0.4572637677192688,\n  -1.381708025932312,\n  -2.9029860496520996,\n  -0.0067894347012043,\n  -1.0149623155593872,\n  0.9458937644958496,\n  0.9209681749343872,\n  1.060046911239624,\n  0.6688523292541504,\n  6.141903877258301,\n  1.310779333114624,\n  2.868373394012451,\n  -4.005626678466797,\n  -4.848935127258301,\n  4.153506278991699,\n  -2.3811848163604736,\n  3.037353515625,\n  2.403576135635376,\n  -0.6241629719734192,\n  1.5334123373031616,\n  1.7924891710281372,\n  0.4291294515132904,\n  -0.6168736219406128,\n  0.5190953016281128,\n  -0.575009286403656,\n  -1.9111328125,\n  -2.182152271270752,\n  -1.4684361219406128,\n  -0.885259747505188,\n  4.439778804779053,\n  3.870082378387451,\n  -1.9082961082458496,\n  -0.873654305934906,\n  1.2576613426208496,\n  -1.0217634439468384,\n  0.87139892578125,\n  0.951541006565094,\n  3.1898019313812256,\n  -0.6484375,\n  -2.897019147872925,\n  5.210914134979248,\n  -3.574985980987549,\n  1.7744954824447632,\n  0.2741946280002594,\n  5.295886993408203,\n  -1.9466378688812256,\n  1.080920934677124,\n  2.051804304122925,\n  -6.296503067016602,\n  1.1486525535583496,\n  -1.7034040689468384,\n  1.193126916885376,\n  -0.8674103617668152,\n  2.1302316188812256,\n  3.1324985027313232,\n  -0.8868582844734192,\n  -5.76132345199585,\n  1.6160482168197632,\n  -1.1574125289916992,\n  -1.484630823135376,\n  -0.9657738208770752,\n  1.4380580186843872,\n  2.9132254123687744,\n  -1.886462926864624,\n  -0.4595191478729248,\n  0.01897321455180645,\n  -1.5620931386947632,\n  0.4403831958770752,\n  -3.7692058086395264,\n  -0.6236746907234192,\n  -2.981142997741699,\n  0.8091517686843872,\n  -0.2263299822807312,\n  1.5625232458114624,\n  -4.183803081512451,\n  -0.8634788990020752,\n  -2.403965473175049,\n  0.11080750823020935,\n  -2.756649971008301,\n  0.9621233344078064,\n  1.1204078197479248,\n  0.9194800853729248,\n  -2.371105432510376,\n  -0.0465611033141613,\n  2.0086727142333984,\n  -1.0849841833114624,\n  -1.1239256858825684,\n  2.768711566925049,\n  0.1133975088596344,\n  0.832635760307312,\n  -6.80844259262085,\n  -2.4436659812927246,\n  0.4210146963596344,\n  -2.979015588760376,\n  -2.6442270278930664,\n  -1.580333948135376,\n  -0.5539085865020752,\n  3.44140625,\n  -4.064406394958496,\n  2.326474189758301,\n  2.459426164627075,\n  0.272367924451828,\n  1.8752092123031616,\n  2.148739814758301,\n  -0.938052237033844,\n  0.9218023419380188,\n  -5.997791290283203,\n  1.0231119394302368,\n  0.2042875736951828,\n  -3.8807663917541504,\n  -1.0704519748687744,\n  1.9897111654281616,\n  0.7762276530265808,\n  -3.0177059173583984,\n  -0.5096726417541504,\n  -2.123744487762451,\n  -2.413864850997925,\n  5.553292274475098,\n  2.9016926288604736,\n  0.4439639151096344,\n  1.2266148328781128,\n  0.3425176739692688,\n  5.058035850524902,\n  -0.9886136651039124,\n  2.0142765045166016,\n  -3.7948288917541504,\n  -0.8102736473083496,\n  0.1419590562582016,\n  0.2845517098903656,\n  1.6029285192489624,\n  0.561151385307312,\n  -0.7681128978729248,\n  2.753708600997925,\n  0.7441871166229248,\n  1.968377947807312,\n  1.574579119682312,\n  0.679082989692688,\n  -1.3087564706802368,\n  0.753481924533844,\n  -0.5762067437171936,\n  -0.6923363208770752,\n  -5.13916015625,\n  -0.3377278745174408,\n  2.478039026260376,\n  2.4757487773895264,\n  3.029587507247925,\n  -0.8198067545890808,\n  -0.981878399848938,\n  2.980422258377075,\n  -1.9473412036895752,\n  -5.538144111633301,\n  4.402146339416504,\n  -0.858026385307312,\n  3.5372605323791504,\n  1.861932635307312,\n  0.1090494766831398,\n  0.976190447807312,\n  -5.073680877685547,\n  -1.329473614692688,\n  -2.038550853729248,\n  -1.1468970775604248,\n  3.4566824436187744,\n  -1.5776599645614624,\n  1.347912073135376,\n  -2.899925708770752,\n  -5.39755392074585,\n  -0.860897958278656,\n  -1.0702223777770996,\n  -0.772832989692688,\n  -0.8892938494682312,\n  3.0733323097229004,\n  -0.0472005195915699,\n  -0.363188236951828,\n  -1.1960521936416626,\n  -2.275783061981201,\n  3.997372627258301,\n  0.5115211009979248,\n  1.0993884801864624,\n  0.9548456072807312,\n  -5.4888434410095215,\n  -0.937069833278656,\n  -1.743280291557312,\n  0.4217587411403656,\n  1.8458425998687744,\n  -2.0880300998687744,\n  -2.041980504989624,\n  3.879092216491699,\n  0.4573916494846344,\n  -0.3455752432346344,\n  1.7820056676864624,\n  -3.7885756492614746,\n  -2.7897019386291504,\n  1.0742536783218384,\n  -3.044945240020752,\n  3.981259346008301,\n  3.9254558086395264,\n  2.992638349533081,\n  -0.5400739312171936,\n  -0.615420401096344,\n  4.70889139175415,\n  -0.6229015588760376,\n  4.666480541229248,\n  -0.7549351453781128,\n  -0.7363444566726685,\n  -0.7118094563484192,\n  -0.5371442437171936,\n  -3.3954148292541504,\n  -2.593796491622925,\n  -2.942894458770752,\n  -2.0179500579833984,\n  -0.6727818250656128,\n  6.028482913970947,\n  3.5321567058563232,\n  0.707464337348938,\n  1.9297804832458496,\n  -1.877453088760376,\n  -2.176478862762451,\n  -2.083449602127075,\n  2.5302443504333496,\n  0.732235848903656,\n  0.316313236951828,\n  ...]]"
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from langchain_community.embeddings.dashscope import DashScopeEmbeddings\n",
    "import os\n",
    "from dotenv import load_dotenv\n",
    "\n",
    "load_dotenv()\n",
    "# e_model = OpenAIEmbeddings() \n",
    "e_model = DashScopeEmbeddings(\n",
    "    # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key=\"sk-xxx\",\n",
    "    dashscope_api_key=os.getenv(\"DASHSCOPE_API_KEY\"),\n",
    "    model=\"text-embedding-v1\"\n",
    ")\n",
    "embeddings = e_model.embed_documents(\n",
    "    [\"你好\",\n",
    "     \"你好啊\",\n",
    "     \"你叫什么名字?\",\n",
    "     \"我叫王大锤\",\n",
    "     ]\n",
    ")\n",
    "embeddings"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-10-24T09:15:16.863955Z",
     "start_time": "2024-10-24T09:15:16.283704Z"
    }
   },
   "id": "8d14cdebf07eb6d1",
   "execution_count": 18
  },
  {
   "cell_type": "markdown",
   "source": [
    "测试向量检索"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "8e4e527523ca3502"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.20767687261104584, 2.144308090209961, 1.4478895664215088, 0.0217420794069767, 2.440538167953491]\n"
     ]
    }
   ],
   "source": [
    "embedded_query = e_model.embed_query(\"这段对话中提到了什么名字?\")\n",
    "print(embedded_query[:5])"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-10-24T09:19:00.130564Z",
     "start_time": "2024-10-24T09:18:59.905005Z"
    }
   },
   "id": "990d96e70ea50f8d",
   "execution_count": 20
  },
  {
   "cell_type": "markdown",
   "source": [
    "### 嵌入向量缓存\n",
    "设置缓存到cache目录下"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "f1926c70aaacf4bc"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.99 ms ± 0 ns per loop (mean ± std. dev. of 1 run, 1 loop each)\n"
     ]
    },
    {
     "data": {
      "text/plain": "['text-embedding-v10e23b11f-d513-58a4-9368-64b0d053ce89']"
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from langchain.embeddings import CacheBackedEmbeddings\n",
    "from langchain.storage import LocalFileStore\n",
    "from langchain_community.embeddings.dashscope import DashScopeEmbeddings\n",
    "from langchain.document_loaders import TextLoader\n",
    "from dotenv import load_dotenv\n",
    "import os\n",
    "\n",
    "fs = LocalFileStore(\"./cache/\")\n",
    "load_dotenv()\n",
    "# e_model = OpenAIEmbeddings() \n",
    "e_model = DashScopeEmbeddings(\n",
    "    # 若没有配置环境变量，请用百炼API Key将下行替换为：api_key=\"sk-xxx\",\n",
    "    dashscope_api_key=os.getenv(\"DASHSCOPE_API_KEY\"),\n",
    "    model=\"text-embedding-v1\"\n",
    ")\n",
    "\n",
    "cached_embeddings = CacheBackedEmbeddings.from_bytes_store(\n",
    "    e_model, fs, namespace=e_model.model\n",
    ")\n",
    "\n",
    "list(fs.yield_keys())\n",
    "\n",
    "# 加载文档，向量化存入cache缓存中\n",
    "# with open(\"test.txt\") as f:\n",
    "#     content = f.read()\n",
    "raw_documents = TextLoader(\"letter.txt\").load()\n",
    "\n",
    "text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)\n",
    "docs = text_splitter.split_documents(raw_documents)\n",
    "# 写入缓存\n",
    "%timeit -r  1 -n 1 db = FAISS.from_documents(docs, cached_embeddings)\n",
    "#查看缓存中的键\n",
    "list(fs.yield_keys())"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-10-24T10:02:35.246399Z",
     "start_time": "2024-10-24T10:02:35.201608Z"
    }
   },
   "id": "d6d64f66bd89bebf",
   "execution_count": 29
  },
  {
   "cell_type": "markdown",
   "source": [
    "## 简单实现文档检索助手\n",
    "依赖docx2txt  pypdf"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "2ba9a4ac80c8fcaa"
  },
  {
   "cell_type": "code",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Error loading xlsx files:No module named 'unstructured'\n",
      "[]\n"
     ]
    }
   ],
   "source": [
    "#导入必须的包\n",
    "from langchain.document_loaders import UnstructuredExcelLoader, Docx2txtLoader, PyPDFLoader,TextLoader\n",
    "from langchain.text_splitter import CharacterTextSplitter\n",
    "\n",
    "\n",
    "#定义chatdoc\n",
    "class ChatDoc():\n",
    "    \"\"\"\n",
    "     \n",
    "    \"\"\"\n",
    "    def __init__(self):\n",
    "        self.doc = None\n",
    "        self.splitText = []  #分割后的文本\n",
    "\n",
    "    def getFile(self):\n",
    "        doc = self.doc\n",
    "        loaders = {\n",
    "            \"docx\": Docx2txtLoader,\n",
    "            \"pdf\": PyPDFLoader,\n",
    "            \"xlsx\": UnstructuredExcelLoader,\n",
    "            \"txt\": TextLoader,\n",
    "        }\n",
    "        file_extension = doc.split(\".\")[-1]\n",
    "        loader_class = loaders.get(file_extension)\n",
    "        if loader_class:\n",
    "            try:\n",
    "                loader = loader_class(doc)\n",
    "                text = loader.load()\n",
    "                return text\n",
    "            except Exception as e:\n",
    "                print(f\"Error loading {file_extension} files:{e}\")\n",
    "        else:\n",
    "            print(f\"Unsupported file extension: {file_extension}\")\n",
    "            return None\n",
    "\n",
    "            #处理文档的函数\n",
    "\n",
    "    def splitSentences(self):\n",
    "        full_text = self.getFile()  #获取文档内容\n",
    "        if full_text != None:\n",
    "            #对文档进行分割\n",
    "            text_split = CharacterTextSplitter(\n",
    "                chunk_size=150,\n",
    "                chunk_overlap=20,\n",
    "            )\n",
    "            texts = text_split.split_documents(full_text)\n",
    "            self.splitText = texts\n",
    "\n",
    "\n",
    "chat_doc = ChatDoc()\n",
    "chat_doc.doc = \"example/fake.xlsx\"\n",
    "chat_doc.splitSentences()\n",
    "print(chat_doc.splitText)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-10-24T10:14:37.642117Z",
     "start_time": "2024-10-24T10:14:37.590841Z"
    }
   },
   "id": "98be977769f66dc4",
   "execution_count": 30
  },
  {
   "cell_type": "code",
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false
   },
   "id": "e45f46ea1a427d27"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
